【发布时间】:2016-10-14 01:20:55
【问题描述】:
当我使用 R 执行 k-means 聚类数据时。我不知道如何找到合适的 k 值。我看到了 Elbow 方法,但我不知道如何使用 kclus
【问题讨论】:
-
您的问题可能更适合交叉验证!
标签: r
当我使用 R 执行 k-means 聚类数据时。我不知道如何找到合适的 k 值。我看到了 Elbow 方法,但我不知道如何使用 kclus
【问题讨论】:
标签: r
我使用了这个特定的例子,这里f 是mydata
library("clusters")
library("fpc")
findClusters <- function(f) {
asw <- numeric(20)
for (k in 2:20)
asw[[k]] <- pam(f,k)$silinfo$avg.width
k.best <- which.max(asw)
cl <- kmeans(f,k.best)
return(unlist(round(cl$centers,3),recursive = FALSE))
}
我是从这个特定的link 中获取的
【讨论】:
你可以使用Elbow方法作为下面的sn-p:
elbow.k <- function(mydata){
## determine a "good" k using elbow
dist.obj <- dist(mydata);
hclust.obj <- hclust(dist.obj);
css.obj <- css.hclust(dist.obj,hclust.obj);
elbow.obj <- elbow.batch(css.obj);
# print(elbow.obj)
k <- elbow.obj$k
return(k)
}
它可以找到合适的k值。但是比较耗时,应该使用并行包来减少时间。
【讨论】: