使用 R 在 k 均值聚类分析中获取聚类均值
Get cluster mean in k-means clustering analysis with R
我使用 k-means 算法创建了两个集群。每个集群包含 4 个变量。如果我想获得每个集群中每个变量的均值,我应该这样做:
clusteredsubset$centers
或
colMeans(y[clusteredsubset$cluster == 1,])
colMeans(y[clusteredsubset$cluster == 2,])
其中 y
是数据矩阵(4 列),clusteredsubset
是 kmeans
的结果。
我会使用:
means = sapply(split(clusteredsubset, clusteredsubset$cluster),function(x)
{return(sapply(x,function(x){return(mean(x))}))})
两者都可以,因为它们给出的结果相同。但是既然kmeans
returnscenters
,为什么不用呢?
以下是基于?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)
我使用 k-means 算法创建了两个集群。每个集群包含 4 个变量。如果我想获得每个集群中每个变量的均值,我应该这样做:
clusteredsubset$centers
或
colMeans(y[clusteredsubset$cluster == 1,])
colMeans(y[clusteredsubset$cluster == 2,])
其中 y
是数据矩阵(4 列),clusteredsubset
是 kmeans
的结果。
我会使用:
means = sapply(split(clusteredsubset, clusteredsubset$cluster),function(x)
{return(sapply(x,function(x){return(mean(x))}))})
两者都可以,因为它们给出的结果相同。但是既然kmeans
returnscenters
,为什么不用呢?
以下是基于?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)