【发布时间】:2017-03-25 05:54:34
【问题描述】:
我在 R 中使用简单的 kmeans 来聚类单个向量。由于集群编号是相当随意分配的(我想),我需要按顺序排列它们(使用集群中心)。
这是一个例子:
> vals <- c(0.22, 0.17, 0.21, 0.13, 0.00)
> set.seed(32833)
> cl <- kmeans(vals ,3)
> cl$cluster
[1] 2 3 2 3 1
> cl$centers
[,1]
1 0.000
2 0.215
3 0.150
从聚类中心可以看出,聚类中心的(升序)顺序为:1,3,2。
我想返回一个相应转换的已识别集群的向量:
例如transform(cl$cluster) 应该给我 3 2 3 2 1。
我尝试通过排序来改变因子水平,但无法使其达到逻辑结束。
> cl$cluster <- as.factor(as.character(cl$cluster))
> levels(cl$cluster) <- order(-cl$centers)
> cl$cluster
[1] 3 1 3 1 2
Levels: 2 3 1
【问题讨论】: