Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 如何使用高斯混合模型(GMM)进行分类_Matlab_Classification - Fatal编程技术网

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(

我在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
如果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更像是一种无监督的方法。