r - R中的模糊C均值聚类
问题描述
我正在对一些数据执行模糊聚类。我首先缩放了数据框,所以每个变量的平均值0
和 sd1.
然后我clValid
从包中运行函数,clValid
如下所示:
library(dplyr)
df<-iris[,-5] # I do not use iris, but to make reproducible
clust<-sapply(df,scale)
intvalid <- clValid(clust, 2:10, clMethods=c("fanny"),
validation="internal", maxitems = 1000)
结果告诉我 4 将是最好的集群数量。因此我fanny
从包中运行函数cluster
如下:
res.fanny <- fanny(clust, 4, metric='SqEuclidean')
res.fanny$coeff
res.fanny$k.crisp
df$fuzzy<-res.fanny$clustering
profile<-ddply(df,.(fuzzy),summarize,
count=length(fuzzy))
但是,在查看 时profile
,我只有 3 个集群而不是 4 个。这怎么可能?我应该选择 3 个集群而不是 4 个集群吗?我该如何解释?我不知道如何重新创建我的数据,因为它非常大。正如其他人之前遇到过的那样?
解决方案
这是基于有限信息的答案尝试,它可能无法完全解决提问者的情况。听起来可能还有其他问题。在聊天中,他们表示他们遇到了我无法重现的其他错误。Fanny 将根据指标计算并将项目分配给“清晰”的集群。它还将生成一个矩阵,显示可以使用 访问的模糊聚类分配membership
。
memb.exp
提问者描述的问题可以通过使用 iris 数据集增加参数来重现。这是一个例子:
library(plyr)
library(clValid)
library(cluster)
df<-iris[,-5] # I do not use iris, but to make reproducible
clust<-sapply(df,scale)
res.fanny <- fanny(clust, 4, metric='SqEuclidean', memb.exp = 2)
调用res.fanny$k.crisp
显示这会产生 4 个清晰的簇。
res.fanny14 <- fanny(clust, 4, metric='SqEuclidean', memb.exp = 14)
调用res.fanny14$k.crisp
表明这会产生 3 个清晰的簇。
人们仍然可以使用res.fanny14$membership
.
如果您有充分的理由认为应该有 4 个清晰的集群,则可以减少该memb.exp
参数。这将收紧集群分配。或者,如果您正在进行某种监督学习,调整此参数的一个过程是保留一些测试数据,进行超参数网格搜索,然后选择在您的首选指标上产生最佳结果的值。然而,如果不了解更多关于任务、数据或提问者试图完成的内容,很难提出比这更多的建议。
推荐阅读
- uiviewcontroller - UIContainerView 中的 ChildViewController 在初始加载时高度错误
- bitbucket - Apache Nifi-registry BitBucket 存储库?
- python - 如何在每个组内做某事并在大熊猫组中做某事
- docker - Jira & Docker & Traefik 设置
- python - 推特 API 的 Python GUI
- android - 在颤动中保存捕获的图像
- sql - 一个多条件的 SQL 查询
- vaadin-flow - 带有模板 API 的 Vaadin 流组件
- javascript - 使用带有 Laravel Mix 工作流的 FullCalendar 出现“时刻未定义”错误
- android - 在adapter中调用startActivityResult,在Fragment中调用onActivityResult