2

我必须使用EM来估计这两个类中每一类的高斯分布的均值和协方差。他们也有一些缺失的属性。

每个对象的类是已知的。因此,问题基本上归结为拟合缺少元素的高斯模型。

哪个库最好用?

ECM算法与EM算法有何不同?

4

3 回答 3

4

如果您有权访问统计工具箱,则可以使用GMDISTRIBUTION类使用 EM 算法拟合高斯混合模型。

这是一个例子:

%# sample dataset
load fisheriris
data = meas(:,1:2);
label = species;

%# fit GMM using EM
K = 2;
obj = gmdistribution.fit(data, K);

%# assign points to mixtures: argmax_k P(M(k)|data)
P = posterior(obj, data);
[~,mIDX] = max(P,[],2);

%# GMM components
obj.mu             %# means
obj.Sigma          %# covariances
obj.PComponents    %# mixture weights

%# visualize original data clusters
figure
gscatter(data(:,1), data(:,2), label)

%# visualize mixtures found
figure
gscatter(data(:,1), data(:,2), mIDX), hold on
ezcontour(@(x,y)pdf(obj,[x y]), xlim(), ylim())

在此处输入图像描述

如果没有,请查看出色的Netlab Toolbox,因为它具有 GMM 实现。

于 2011-09-07T03:29:49.037 回答
1

谢谢大家。但是我使用ecnmle来估计参数,然后获得边际分布,稍后在贝叶斯分类中使用。它在 2 个类上以 0.9 和 0.69 的精度工作得很好。

于 2011-09-09T12:12:19.677 回答
0

请查看PMTK 工具包

这是EM 实现(适合数据可能包含 NaN 条目的高斯混合)

于 2011-09-06T13:24:27.203 回答