我在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(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
拜托,我想知道我做得是否正确。
问候。
这不是我理解的gmm。如果您打算对项目属于类 1 还是类 2 进行分类,那么我会做以下几件事。
GMM_class = gmdistribution.fit(trainData,2,'CovType','diagonal');
posteriorTest = posterior(GMM_class,testData);
然后,您可以执行 if 语句来判断测试数据属于类 1 还是类 2。