基于MATLAB的GMM分类

基于MATLAB的GMM分类,matlab,classification,gaussian,Matlab,Classification,Gaussian,我想在MATLAB中使用高斯混合模型对两类进行分类 我通过使用gmdistribution.fit函数创建两个模型来进行培训 NComponents = 1; for class=1:2 model(class).obj = gmdistribution.fit(trainData(class).feature,NComponents,'Regularize',.1); end 然后,给定测试数据点,我想知道如何对它们进行分类。我现在要做的是获得每个模型中每个点的后验

我想在MATLAB中使用高斯混合模型对两类进行分类

我通过使用gmdistribution.fit函数创建两个模型来进行培训

NComponents = 1;
  for class=1:2
      model(class).obj =    gmdistribution.fit(trainData(class).feature,NComponents,'Regularize',.1);
  end
然后,给定测试数据点,我想知道如何对它们进行分类。我现在要做的是获得每个模型中每个点的后验概率:

vectorClasses = zeros(1,2);
    for class=1:2
        Pos=  posterior(model(class).obj,testDataPoint);           
         suma=0;
         for k=1:NComponents
             suma = suma + Pos(1,k)*model(class).obj.PComponents(k);
         end
        vectorClasses(class)=suma;
    end
    [v ix] = sort(vectorClasses,'descend');
    if ix(1)==realClass
        success= 1;
    else
        success= 0;
    end
我将每个组件的后验概率与模型中组件的概率相乘求和。然后我对每个模型中得到的概率进行排序。我说测试数据点对应于概率最高的类


我做得好吗?正确的方法是什么?有最简单的方法吗?

似乎没有必要像在HMM中那样为每个类提供独立的模型,如中的回答所述:
. 与分类阶段类似,后部命令似乎也能完成这项工作。但是,模型似乎没有指明哪个集群代表哪个类(我们必须弄清楚)。如果你已经获得了一个完整的解决方案,请发布它。关于如何使用matlab的gmm进行分类(也一直在搜索),没有太多信息

嗨,我以前也遇到过类似的问题,我认为@dpwe是对的。基本上,我使用
[Dummy,nlogl]=posterior(model(class).obj,testDataPoint)
nlogl
作为典型类的后方。希望这能帮助你。此外,您可以在Matlab中打开后验函数,以确保通过调试模式知道该函数输出的含义。