【问题标题】:Classify using GMM with MATLAB使用 GMM 和 MATLAB 进行分类
【发布时间】:2014-08-07 01:48:07
【问题描述】:

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

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

我做得好吗?正确的方法是怎样的?有没有最简单的方法?

【问题讨论】:

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

标签: matlab classification gaussian


【解决方案1】:

似乎不需要像在 HMM 的情况下那样每个类都有独立的模型,如答案中所述: this very complete description。与分类阶段类似,后验命令似乎可以完成这项工作。然而,看起来模型并没有指出哪个集群代表哪个类(我们必须弄清楚)。如果您已获得完整的解决方案,请发布。关于如何使用matlab的gmm进行分类的信息并不多(也一直在搜索)。

【讨论】:

    猜你喜欢
    • 2015-03-30
    • 2015-12-21
    • 2012-10-06
    • 2019-10-04
    • 1970-01-01
    • 1970-01-01
    • 2014-04-07
    • 2014-07-16
    相关资源
    最近更新 更多