我使用k-means算法创建了两个集群。每个群集包含4个变量。如果我想获得每个集群中每个变量的方法,我应该这样做:
clusteredsubset$centers
或
colMeans(y[clusteredsubset$cluster == 1,])
colMeans(y[clusteredsubset$cluster == 2,])
其中y
是数据矩阵(4列),clusteredsubset
是kmeans
的结果。
答案 0 :(得分:3)
任何一个都没问题,因为它们会给出相同的结果。但是,由于kmeans
返回centers
,为什么不使用它?
以下内容基于?kmeans
的第一个示例:
set.seed(0)
x <- rbind(matrix(rnorm(100, sd = 0.3), ncol = 2),
matrix(rnorm(100, mean = 1, sd = 0.3), ncol = 2))
colnames(x) <- c("x", "y")
cl <- kmeans(x, 2)
## what `kmeans` returns
cl$centers
# x y
#1 -0.0008158201 -0.008394296
#2 0.9261878482 1.029984748
## manual computation
colMeans(x[cl$cluster == 1, ])
# x y
#-0.0008158201 -0.0083942957
colMeans(x[cl$cluster == 2, ])
# x y
#0.9261878 1.0299847
结果完全相同(数字的差异仅仅是打印效果)。
## make a plot
plot(x, col = cl$cluster)
points(cl$centers, col = 1:2, pch = 8, cex = 2)
答案 1 :(得分:1)
我会用:
means = sapply(split(clusteredsubset, clusteredsubset$cluster),function(x)
{return(sapply(x,function(x){return(mean(x))}))})