在R中,mclust有一个参数&#39; modelNames&#39;您可以在哪里定义要实施的模型。我希望在python中的mixture.GMM下的mclust中进行单变量建模,也是modelNames <- 'V'
。但是,我发现我唯一可以调整的是covariance_type。尽管如此,当我在mixture.GMM
下使用R和sklearn
运行相同的数据时,尽管安装了相同数量的组件,但我得到了不同的拟合。我可以在mixture.GMM
中更改哪些内容表明我使用的是单变量变量?
mclust代码:
function(x){Mclust(ma78[x,],G=2,modelNames="V",verbose=FALSE)}
GMM代码:
gmm = GMM(n_components = 2).fit(data)
答案 0 :(得分:0)
对于单变量数据,协方差可以相等或唯一(可变)。对于Mclust
,这些选项分别为modelNames = "E"
或"V"
。
使用sklearn
,它们似乎是covariance_type = "tied"
或"full"
。对于可变高斯混合模型,可能就是这样的东西
gmm = mixture.GaussianMixture(n_components = 2, covariance_type='full').fit(data)
即使单独使用Mclust
或sklearn
,也可以为不同的运行获取相同的参数值 - 这是因为估算可能取决于初始值。避免这种情况的一种方法是,如果有这样的选项,则使用更多的启动。