1

在 R 中,mclust 有一个参数“modelNames”,您可以在其中定义要实现的模型。我希望做一个单变量建模,它也在modelNames <- 'V'python 中的 mix.GMM 下的 mclust 中。但是,我发现唯一可以调整的是 covariance_type。尽管如此,当我使用 R 和mixture.GMMunder运行相同的数据时sklearn,尽管安装的组件数量相同,但我得到了不同的拟合。我可以改变什么mixture.GMM来表明我正在使用单变量变量?

集群代码:

function(x){Mclust(ma78[x,],G=2,modelNames="V",verbose=FALSE)}

GMM代码:

gmm = GMM(n_components = 2).fit(data)
4

2 回答 2

0

对于单变量数据,协方差可以是相等的,也可以是唯一的(变量)。Mclust这些选项分别是modelNames = "E"或。"V"

随着sklearn,它们似乎是covariance_type = "tied""full"。对于可变高斯混合模型,可能是这样的

gmm = mixture.GaussianMixture(n_components = 2, covariance_type='full').fit(data)

即使使用Mclustsklearn单独使用,也可能会出现不同运行可能无法获得相同参数值的实例 - 这是因为估计值可能取决于初始值。避免这种情况的一种方法是在此类选项可用的情况下使用更多的启动次数。

于 2018-04-05T15:31:10.397 回答
0

在stats.stackexchange上找到了答案。您唯一需要做的就是在将数据data.reshape(-1, 1)传递给之前重塑数据sklearn.mixture.GaussianMixture

安德烈亚斯

于 2021-05-21T09:55:12.103 回答