簡體   English   中英

python中的sklearn mix.GMM使用單變量GMM

[英]sklearn mixture.GMM in python using univariate GMM

在 R 中,mclust 有一個參數“modelNames”,您可以在其中定義要實現的模型。 我希望做一個單變量建模,它也是 python 中 mix.GMM 下 mclust 中的modelNames <- 'V' 但是,我發現唯一可以調整的是 covariance_type。 然而,當我運行使用R和相同的數據mixture.GMMsklearn ,我雖然獲得相同數量的裝配組件的不同配件。 我可以在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)

即使單獨使用Mclustsklearn ,也可能會出現不同運行時您可能無法獲得相同參數值的情況——這是因為估計值可能取決於初始值。 避免這種情況的一種方法是,如果此類選項可用,則使用更多的啟動次數。

stats.stackexchange上找到了答案。 您唯一需要做的就是在將數據傳遞給sklearn.mixture.GaussianMixture之前重塑數據data.reshape(-1, 1)

安德烈亞斯

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM