Matlab 如何使用高斯混合模型(GMM)进行分类
我在matlab中使用GMM进行数据分类 问题与这个问题类似: 我有以下数据集:Matlab 如何使用高斯混合模型(GMM)进行分类,matlab,classification,Matlab,Classification,我在matlab中使用GMM进行数据分类 问题与这个问题类似: 我有以下数据集: trainData1; % dataset for class 1 trainData2; % dataset for class 2 testData; % test dataset 要获得GMM模型,请执行以下操作: GMM_class1=gmdistribution.fit(trainData1,12,'CovType','diagonal'); GMM_class2=gmdistribution.fit(
trainData1; % dataset for class 1
trainData2; % dataset for class 2
testData; % test dataset
要获得GMM模型,请执行以下操作:
GMM_class1=gmdistribution.fit(trainData1,12,'CovType','diagonal');
GMM_class2=gmdistribution.fit(trainData2,12,'CovType','diagonal');
要获取每个类的测试数据集的日志相似性:
[posteriorTest_Train1,nlogL_1]=posterior(GMM_class1,testData);
[posteriorTest_Train2,nlogL_2]=posterior(GMM_class2,testData);
要分类,我要做的是:
if nlogL_1 < nlogL_2
% testData belongs to class 1
else
% testData belongs to class 2
end
如果nlogL_1
拜托,我想知道我做的是否正确
问候。这不是我理解的gmm。 如果您打算对项目进行分类,确定其属于类别1还是类别2, 然后我会做下面的事情
GMM_class = gmdistribution.fit(trainData,2,'CovType','diagonal');
posteriorTest = posterior(GMM_class,testData);
然后,您可以执行if语句来判断测试数据属于1类还是2类。谢谢您的回答,但我不理解其中的区别。当我使用GMM_class1和GMM_class2时,我打算获得每个类的模型。对不对?考虑到您的答案,我理解您的所有列车数据集(trainData1和trainData2)只有一个集合(trainData),对吗?因此,如何以这种方式执行if语句?后验值应该有两个值,一个用于类1,另一个用于类2。你只需要选择一个大的作为标签。我想你是这样想的:gmdistribution.fit函数是gmdistribution.fit(X,k),其中X是数据集,k是类数。但是,在我的理解中,k是用于建模一个类的组件(高斯)的数量。是的,这是我的理解。我认为gmm更像是一种无监督的方法。