[英]sklearn mixture.GMM in python using univariate GMM
在 R 中,mclust 有一個參數“modelNames”,您可以在其中定義要實現的模型。 我希望做一個單變量建模,它也是 python 中 mix.GMM 下 mclust 中的modelNames <- 'V'
。 但是,我發現唯一可以調整的是 covariance_type。 然而,當我運行使用R和相同的數據mixture.GMM
下sklearn
,我雖然獲得相同數量的裝配組件的不同配件。 我可以在mixture.GMM
改變什么來表明我使用的是單變量變量方差?
集群代碼:
function(x){Mclust(ma78[x,],G=2,modelNames="V",verbose=FALSE)}
GMM 代碼:
gmm = GMM(n_components = 2).fit(data)
對於單變量數據,協方差可以是相等的,也可以是唯一的(變量)。 對於Mclust
這些選項分別是modelNames = "E"
或"V"
。
使用sklearn
,它們似乎是covariance_type = "tied"
或"full"
。 對於可變高斯混合模型,可能是這樣的
gmm = mixture.GaussianMixture(n_components = 2, covariance_type='full').fit(data)
即使單獨使用Mclust
或sklearn
,也可能會出現不同運行時您可能無法獲得相同參數值的情況——這是因為估計值可能取決於初始值。 避免這種情況的一種方法是,如果此類選項可用,則使用更多的啟動次數。
在stats.stackexchange上找到了答案。 您唯一需要做的就是在將數據傳遞給sklearn.mixture.GaussianMixture
之前重塑數據data.reshape(-1, 1)
安德烈亞斯
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.