在R中,mclust有一个参数'modelNames‘,您可以在其中定义要实现模型。我希望做一个单变量建模,它也是在python中mixture.GMM下mclust中的modelNames <- 'V'。然而,我发现唯一可以调整的就是covariance_type。尽管如此,当我在sklearn下使用R和mixture.GMM运行相同的数据时,我得到了不同的拟合,尽管拟合的组件数量相同。我可以在mixture.GMM中更改什么来表明我使用的是单变量方差?
mclust代码:
function(x){Mclust(ma78[x,],G=2,modelNames="V",verbose=FALSE)}GMM代码:
gmm = GMM(n_components = 2).fit(data)发布于 2018-04-05 23:31:10
对于单变量数据,协方差可以是相等的或唯一的(变量)。对于Mclust,这些选项分别是modelNames = "E"或"V"。
在sklearn中,它们看起来像是covariance_type = "tied"或"full"。对于可变高斯混合模型,可能是这样的。
gmm = mixture.GaussianMixture(n_components = 2, covariance_type='full').fit(data)即使单独使用Mclust或sklearn,也可能会出现这样的情况,即不同的运行可能不会获得相同的参数值-这是因为估计值可能取决于初始值。避免这种情况的一种方法是使用更多的启动次数,如果有这样的选项的话。
发布于 2021-05-21 17:55:12
在stats.stackexchange上找到了答案。您唯一需要做的就是在将数据data.reshape(-1, 1)传递到sklearn.mixture.GaussianMixture之前对其进行整形
安德烈亚斯
https://stackoverflow.com/questions/49675999
复制相似问题