Python Scikit Learn GMM 结果与 R Mclust 不一致

Posted

技术标签:

【中文标题】Python Scikit Learn GMM 结果与 R Mclust 不一致【英文标题】:Python Scikit Learn GMM results inconsistent with R Mclust 【发布时间】:2015-02-04 23:26:09 【问题描述】:

我正在尝试在 R 中复制 MClust 的 Scikit Learn GMM 中的结果。使用这些数据,我得到的结果在各个包中是不同的。我在mixture.GMM中尝试了不同的协方差结构。如何让 Python 版本匹配?更简单的示例可以正常工作,但是对于这种方差结构,我无法使其工作。

Python 代码:

gmm = mixture.GMM(n_components=3,n_iter=1000,covariance_type='full')
gmm.fit(data)
gmm.means_
   array([[ 0.08603919],
          [ 0.08590469],
          [ 0.08617066]])
gmm.covars_
   array([[ 0.00122368],
          [ 0.0012216 ],
          [ 0.00122569]])

R 代码

res<-Mclust(Stamp$thickness)
res$param$mean
0.07215458 0.07935341 0.09919740 
res$param$variance$sigmasq
4.814927e-06 3.097694e-06 1.884615e-04

【问题讨论】:

【参考方案1】:

设置 min_covar=0 使其按您的需要工作。

gmm = mixture.GMM(n_components=3,n_iter=1000,covariance_type='full',min_covar=0)

【讨论】:

以上是关于Python Scikit Learn GMM 结果与 R Mclust 不一致的主要内容,如果未能解决你的问题,请参考以下文章

scikit-learn GMM 产生正对数概率

scikit-learn 中的测试集分区

BIC 使用来自 scikit-learn 的 GaussianMixture 过度拟合图像分割模型中的组件数量

“标量变量的无效索引” - 使用 Scikit Learn 时“accuracy_score”

scikit-learn 中的负平均绝对误差是多少?

Python中计算TF-IDF(scikit-learn)