我必須使用EM來估計兩個類別的高斯分佈的均值和協方差。他們也有一些缺失的屬性。期望最大化在Matlab上丟失數據
每個對象的類是已知的。因此,問題基本上簡化爲擬合缺少元素的高斯模型。
哪一個是最好的圖書館使用?
ECM算法不同於EM算法?
我必須使用EM來估計兩個類別的高斯分佈的均值和協方差。他們也有一些缺失的屬性。期望最大化在Matlab上丟失數據
每個對象的類是已知的。因此,問題基本上簡化爲擬合缺少元素的高斯模型。
哪一個是最好的圖書館使用?
ECM算法不同於EM算法?
請大家看看PMTK toolkit
這裏是EM implementation(適合高斯其中數據可能有NaN的條目的混合物)
如果你有機會獲得統計工具箱,你可以使用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的實現。
我認爲這應該用if類不知道。因爲我知道這些類,所以最好分別對它們進行高斯擬合。希望後者能爲我提供更好的結果。 – damned
???未定義的函數或方法'process_options'用於'cell'類型的輸入參數。 錯誤==> mixGaussMissingFitEm 12 [model.cpd.mu,model.cpd.Sigma,model.mixWeight,model.doMap,model.diagCov,EMargs] = ... –