k 表示用 r 中的原始数据作图

k means plot with the original data in r

目前我正在探索 kmeans 函数。我有一个包含以下条目的简单文本文件 (test.txt)。数据可以分成 2 个集群。

    1 
    2
    3
    8
    9
   10

如何绘制 kmeans 函数(使用 plot 函数)的结果以及原始数据?我也有兴趣观察簇及其质心的分布情况?

这是来自 example(kmeans) 的示例:

# This is just to generate example data
test <- rbind(matrix(rnorm(100, sd = 0.3), ncol = 2),
           matrix(rnorm(100, mean = 1, sd = 0.3), ncol = 2))
colnames(test) <- c("V1", "V2")

#store the kmeans in a variable called cl
(cl <- kmeans(test, 2))

# plot it and also plot the points of the centeroids
plot(test, col = cl$cluster)
points(cl$centers, col = 1:2, pch = 8, cex = 2)

编辑

OP 还有一些问题:

(cl <- kmeans(test, 2))
plot(test, col = cl$cluster)
points(cl$centers, col = 1:2, pch = 8, cex = 2)

以上代码导致:

(cl <- kmeans(test[,1], 2))
plot(test[,1], col = cl$cluster)
points(cl$centers, col = 1:2, pch = 8, cex = 2)

以上代码导致:

(cl <- kmeans(test[,1], 2))
plot(cbind(0,test[,1]),  col = cl$cluster)
points(cbind(0,cl$centers), col = 1:2, pch = 8, cex = 2)

以上代码导致:

解释

在案例 1 中,数据有两个维度(V1、V2),因此质心有两个坐标,就像图中的点一样。在情况 2 中,数据就像您的数据一样是一维的 (V1)。 R 给每个点一个索引,这导致 x 值成为索引值,质心也只有一个坐标,这就是为什么你一直看到它们在图的左边。 情况 3 是一维数据实际的样子,如果你只在一个维度上绘制它。

结论

你的数据是一维的,如果你在二维中绘制它,你会得到类似情况二的结果,其中 x 值由 R 给出,它们是索引值。像那样绘制它没有多大意义。