使用GMM和MATLAB进行分类

时间:2014-06-17 06:39:35

标签: matlab classification gaussian

我想用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

我将每个分量的后验概率与模型中分量的概率相乘。然后我对每个模型中获得的概率进行排序。我说测试数据点对应的概率最高的类。

我做得好吗?怎么回事?有最简单的方法吗?

1 个答案:

答案 0 :(得分:0)

似乎没有必要像HMM那样拥有每个类的独立模型,如下面的答案中所述: this very complete description。类似于分类阶段,后验命令似乎做了工作。但是,看起来模型并不表示哪个集群代表哪个类(我们必须弄明白)。如果您已经获得完整的解决方案,请发布。关于如何使用matlab的gmm进行分类(一直在搜索)的信息并不多。