2

我需要帮助来了解如何使用 R 中的 k-means 集群找到最佳的集群数量。

我的代码是

library(cluster)
library(factoextra)


#read data
data<-read.csv("..\file.txt",header=FALSE, sep=" ")

#determine number of clusters to use
k.max<- 22
wss <- sapply(2:k.max, function(k){kmeans(data, k, nstart=10 )$tot.withinss})

print(wss)

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


fviz_nbclust(data, kmeans, method = "wss") + geom_vline(xintercept = 3, linetype = 2)

我得到了情节,但我仍然不知道如何找到数字?

谢谢

我的情节在这个链接中显示了 wss 和集群数量之间的关系,没有关于最佳集群数量的信息

4

2 回答 2

2
n_clust<-fviz_nbclust(df, kmeans, method = "silhouette",k.max = 30)
n_clust<-n_clust$data
max_cluster<-as.numeric(n_clust$clusters[which.max(n_clust$y)])
于 2019-05-15T10:36:43.763 回答
0

“肘部”没有合理的数学定义(因为 x 和 y 上有不同的比例,所以没有角度),在像你这样的图中,可能根本没有“肘部”。

很可能,k-means 对任何 k 都不起作用。这种情况经常发生。例如,如果您的数据不包含集群。

尝试生成统一的数据,并绘制相同的图 - 它看起来很相似。

于 2016-11-27T00:41:55.440 回答