Matlab中缺失数据的期望最大化

时间:2011-09-06 09:37:33

标签: matlab machine-learning data-mining gaussian expectation-maximization

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

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

哪个库是最好用的?

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

3 个答案:

答案 0 :(得分: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())

enter image description here

如果没有,请查看优秀的Netlab Toolbox,因为它有GMM实施。

答案 1 :(得分:1)

全部谢谢。但是我使用ecmnmle来估算参数,然后获得后来在贝叶斯分类中使用的marginals的分布。它的工作非常精细,2个等级的精度为0.9和0.69。

答案 2 :(得分:0)

请查看PMTK toolkit

这是EM implementation(适合高斯混合物,数据可能有NaN条目)