首页 > 解决方案 > R中的Mclust和sklearn中的高斯混合之间的区别

问题描述

我正在执行高斯混合建模以在我的数据集中查找集群。首先,我使用了 sklearn 的 Gaussian Mixture 类,并了解到根据 BIC,3 个集群是最佳数量。

from sklearn.mixture import GaussianMixture as GMM
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
scd = scaler.fit_transform(data)
n_components = np.arange(1, 21)
models = [GMM(n, covariance_type='full',random_state=42).fit(scd)
          for n in n_components]
plt.plot(n_components, [m.bic(scd) for m in models], label='BIC')

然后我想在 R 中仔细检查一下,如下所示:

library(factoextra)
library(mclust)
normFunc <- function(x){(x-mean(x, na.rm = T))/sd(x, na.rm = T)}
set.seed(123)
clust<-sapply(df,normFunc)
clust<-data.frame(clust)
BIC<-Mclust(clust, G=1:20)
summary(BIC)

但是,在 R 中,mclust 用 VEE 模型表示 13 个集群。差异从何而来?我尝试按照此答案min_covar=0.0000001中的说明设置 GMM ,但不再支持该文档。我的想法是它与一些微小的缩放差异或. 是否建议调整in sklearn?是否更类似于 mclust 中的 VVV 模型?covariance_typeconvariance_typecovariance_type='full'

标签: rscikit-learncluster-analysismclust

解决方案


推荐阅读