我正在使用kmeans对数据进行聚类,对于生成的结果,我有一个计划。
我想根据订购的中心重新标记样品。考虑以下示例:
a = c("a","b","c","d","e","F","i","j","k","l","m","n")
b = c(1,2,3,20,21,21,40,41,42,4,23,50)
mydata = data.frame(id=a,amount=b)
result = kmeans(mydata$amount,3,nstart=10)
结果如下:
clus$cluster
2 2 2 3 3 3 1 1 1 2 3 1
clus$centers
1 43.25
2 2.50
3 21.25
mydata = data.frame(mydata,label =clus$cluster)
mydata
id amount label
1 a 1 2
2 b 2 2
3 c 3 2
4 d 20 3
5 e 21 3
6 F 21 3
7 i 40 1
8 j 41 1
9 k 42 1
10 l 4 2
11 m 23 3
12 n 50 1
我正在寻找的是对中心进行分类并相应地制作标签:
1 2.50
2 21.25
3 43.25
并将样品标记为:
1 1 1 2 2 2 3 3 3 1 2 3
结果应该是:
id amount label
1 a 1 1
2 b 2 1
3 c 3 1
4 d 20 2
5 e 21 2
6 F 21 2
7 i 40 3
8 j 41 3
9 k 42 3
10 l 4 1
11 m 23 2
12 n 50 3
我认为可以按顺序排列中心,并为每个样本提取样本最小距离指数,以中心作为该聚类的标签。
有没有其他方法可以让R自动完成?