r - 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_type
convariance_type
covariance_type='full'
解决方案
推荐阅读
- javascript - 如何在 Angular 上使用 Highchart?
- angular - 无法在验证器中读取表单组值
- java - CompletableFuture 和垃圾收集
- amazon-web-services - 无法从 AWS CLI/控制台/开发工具包通过 AWS SNS 发送文本消息
- jenkins-plugins - 自定义 Jenkins 插件在重新配置作业时不记得它自己的变量
- google-cloud-platform - 需要帮助配置 Stackdriver 警报的条件
- reactjs - 如何为 Material-ui TextField Type=date 设置默认日期
- symfony - 如何更改实体中的数据库列类型
- java - 卡夫卡:当连接在消费者完成阅读主题之前中断时会发生什么?
- php - 解析具有多行声明版本和编码的 XML 文档时的 SimpleXML 错误