如何使用高斯混合模型 (GMM) 进行分类



我在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。

最新更新