我想用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
我将每个分量的后验概率与模型中分量的概率相乘。然后我对每个模型中获得的概率进行排序。我说测试数据点对应的概率最高的类。
我做得好吗?怎么回事?有最简单的方法吗?
答案 0 :(得分:0)
似乎没有必要像HMM那样拥有每个类的独立模型,如下面的答案中所述: this very complete description。类似于分类阶段,后验命令似乎做了工作。但是,看起来模型并不表示哪个集群代表哪个类(我们必须弄明白)。如果您已经获得完整的解决方案,请发布。关于如何使用matlab的gmm进行分类(一直在搜索)的信息并不多。