根据输入值排序kmeans集群标签

时间:2017-12-22 15:44:39

标签: r sorting cluster-analysis

我有一系列值,我想使用kmeans识别具有最低值的群集。然而,群集标签似乎按照我正在寻找的不同方式进行排序。

test <- c(1,4,5,12,17,18,33,34)
cl <- kmeans(test, centers = 3, nstart =10)
cl$cluster
[1] 2 2 2 1 1 1 3 3
# whereas I would have expected to get
[1] 1 1 1 2 2 2 3 3

如何以我想要的方式对kmeans的输出进行排序?

1 个答案:

答案 0 :(得分:0)

无法保证将较低的数字与其他较低的数字组合在一起,并且您无法准确说明您希望如何订购群集。这是一种方式;您可以按群集中的最低点索引对群集进行排序。这将产生您在此测试数据上要求的结果。

MT = aggregate(test, list(cl$cluster), min)
MT$Group.1[order(MT$x)[cl$cluster]]
[1] 1 1 1 2 2 2 3 3

如果您想将此更改传播到cl,您可以进行分配

cl$cluster = MT$Group.1[order(MT$x)[cl$cluster]]