【发布时间】:2011-11-11 04:22:51
【问题描述】:
我必须使用 EM 来估计两个类中每个类的高斯分布的均值和协方差。它们也缺少一些属性。
每个对象的类是已知的。因此问题基本上归结为拟合缺少元素的高斯模型。
最好使用哪个库?
ECM算法与EM算法有何不同?
【问题讨论】:
标签: matlab machine-learning data-mining gaussian expectation-maximization
我必须使用 EM 来估计两个类中每个类的高斯分布的均值和协方差。它们也缺少一些属性。
每个对象的类是已知的。因此问题基本上归结为拟合缺少元素的高斯模型。
最好使用哪个库?
ECM算法与EM算法有何不同?
【问题讨论】:
标签: matlab machine-learning data-mining gaussian expectation-maximization
如果您有权访问统计工具箱,则可以使用 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 实现。
【讨论】:
这里是EM implementation(适合数据可能包含 NaN 条目的高斯混合)
【讨论】: