R 验证模糊聚类

R 验证模糊聚类,r,validation,cluster-analysis,R,Validation,Cluster Analysis,我想在一个包含41个变量和415个观测值的大型无监督数据集上使用模糊C均值聚类。然而,我一直在尝试验证这些集群。当我用随机数的聚类进行绘图时,我可以解释总共54%的方差,这不是很大,而且没有像使用iris数据库那样的非常好的聚类 首先,我在3个集群上运行fcm,使用scales数据查看,但如果我试图找到搜索最佳集群数量的方法,那么我不想设置任意定义的集群数量 所以我转向谷歌,谷歌搜索:“R.中的valdiate模糊聚类”,但我仍然需要尝试大量不同数量的聚类。我查看了advclust、ppclus

我想在一个包含41个变量和415个观测值的大型无监督数据集上使用模糊C均值聚类。然而,我一直在尝试验证这些集群。当我用随机数的聚类进行绘图时,我可以解释总共54%的方差,这不是很大,而且没有像使用
iris
数据库那样的非常好的聚类

首先,我在3个集群上运行
fcm
,使用scales数据查看,但如果我试图找到搜索最佳集群数量的方法,那么我不想设置任意定义的集群数量

所以我转向谷歌,谷歌搜索:“R.中的valdiate模糊聚类”,但我仍然需要尝试大量不同数量的聚类。我查看了
advclust
ppclust
clvalid
软件包,但没有找到函数的演练。我查看了每个包的文档,但也看不出下一步该做什么

我浏览了一些可能的集群,并用范妮提供的
k.crisp
对象检查了每个集群。我从100开始,一直到4。根据文档中的对象描述

k、 crisp=整数(≤ k)给出脆簇的数量;可以少于 k,其中建议减少memb.exp

这似乎不是一种有效的方法,因为它是比较清晰聚类和模糊聚类的数量

是否有一个功能,我可以从
2:10
集群检查集群的有效性?另外,是否值得检查1个集群的有效性?我认为这是一个愚蠢的问题,但我有一种奇怪的感觉1最佳集群可能就是我得到的。(如果我得到一个集群,除了在里面哭一点,还有什么建议吗?)

代码

library(cluster)
library(factoextra)
library(ppclust)
library(advclust)
library(clValid)
data(iris)
df<-sapply(iris[-5],scale)
res.fanny<-fanny(df,3,metric='SqEuclidean')
res.fanny$k.crisp
# When I try to use euclidean, I get the warning all memberships are very close to 1/l. Maybe increase memb.exp, which I don't fully understand
# From my understanding using the SqEuclidean is equivalent to Fuzzy C-means, use the website below. Ultimately I do want to use C-means, hence I use the SqEuclidean distance
fviz_cluster(Res.fanny,ellipse.type='norm',palette='jco',ggtheme=theme_minimal(),legend='right')
fviz_silhouette(res.fanny,palette='jco',ggtheme=theme_minimal())

# With ppclust
set.seed(123)
res.fcm<-fcm(df,centers=3,nstart=10)
库(集群)
图书馆(额外)
图书馆(ppclust)
图书馆(advclust)
图书馆(clValid)
数据(iris)

df据我所知,您需要检查不同数量的聚类,看看解释的方差百分比如何随不同数量的聚类而变化。这种方法称为弯头法

wss <- sapply(2:10, 
       function(k){fcm(df,centers=k,nstart=10)$sumsqrs$tot.within.ss})

plot(2:10, wss,
     type="b", pch = 19, frame = FALSE, 
     xlab="Number of clusters K",
     ylab="Total within-clusters sum of squares")

wss我在寻找一种更正式的方法。但这不是使用K均值聚类吗?目标是相似的,所以我认为我们可以使用这种方法。请检查这篇文章,他们使用k=1作为零假设,并使用某种度量,在图上寻找“弯头”。