2

我必須使用EM來估計兩個類別的高斯分佈的均值和協方差。他們也有一些缺失的屬性。期望最大化在Matlab上丟失數據

每個對象的類是已知的。因此,問題基本上簡化爲擬合缺少元素的高斯模型。

哪一個是最好的圖書館使用?

ECM算法不同於EM算法?

回答

1

謝謝all.But我使用ecmnmle估計參數,然後獲得marginals的分佈,稍後用於貝葉斯分類。它工作得很好,精度分別爲0.9和0.69。

0

請大家看看PMTK toolkit

這裏是EM implementation(適合高斯其中數據可能有NaN的條目的混合物)

+0

???未定義的函數或方法'process_options'用於'cell'類型的輸入參數。 錯誤==> mixGaussMissingFitEm 12 [model.cpd.mu,model.cpd.Sigma,model.mixWeight,model.doMap,model.diagCov,EMargs] = ... –

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的實現。

+0

我認爲這應該用if類不知道。因爲我知道這些類,所以最好分別對它們進行高斯擬合。希望後者能爲我提供更好的結果。 – damned