群集点我已经设置的数据(5000点与4周的尺寸),我已经在R.订购使用K均值和R
使用k均值群集我要通过其距离订购每个集群中的点该群集的中心。
很简单,数据看起来像这样(我使用的一个子集来测试各种方法):首先
id Ans Acc Que Kudos
1 100 100 100 100
2 85 83 80 75
3 69 65 30 29
4 41 45 30 22
5 10 12 18 16
6 10 13 10 9
7 10 16 16 19
8 65 68 100 100
9 36 30 35 29
10 36 30 26 22
,我用下面的方法来数据集聚成2簇:
(result <- kmeans(data, 2))
这将返回具有以下methods: cluster, centers etc.
但我canno一个k均值对象弄清楚如何比较每个点并产生一个有序列表。
其次,我尝试了系列化的做法被其他SO用户的建议here
我使用以下命令:
clus <- kmeans(scale(x, scale = FALSE), centers = 3, iter.max = 50, nstart = 10)
mns <- sapply(split(x, clus$cluster), function(x) mean(unlist(x)))
result <- dat[order(order(mns)[clus$cluster]), ]
这似乎产生有序列表,但如果我把它绑定到标记群集(使用以下cbind命令):
result <- cbind(x[order(order(mns)[clus$cluster]), ],clus$cluster)
我得到以下结果,它似乎不是顺序编辑正确:
id Ans Acc Que Kudos clus
1 3 69 65 30 29 1
2 4 41 45 30 22 1
3 5 10 12 18 16 2
4 6 10 13 10 9 2
5 7 10 16 16 19 2
6 9 36 30 35 29 2
7 10 36 30 26 22 2
8 1 100 100 100 100 1
9 2 85 83 80 75 2
10 8 65 68 100 100 2
我不想写命令无礼,但了解该方法如何工作。如果任何人都可以帮助或传播这些信息,这将非常棒。
编辑:::::::::::
由于集群可以很容易地绘制,我想像有一个更简单的方式来获得和排名分中心之间的距离。
上述群集的中心(使用k = 2时)如下。但我不知道如何获得并与每个单独的点进行比较。
Ans Accep Que Kudos
1 83.33333 83.66667 93.33333 91.66667
2 30.28571 30.14286 23.57143 20.85714
NB ::::::::
我不需要顶部使用k均值,但我想指定集群的数量并从这些集群点的有序列表。
这是一个很好的问题...请检查您不使用ID集群(我想有情况下,您可能想,但不太可能) – Seth 2012-04-09 16:13:47
酷,我不想集群ID,代表我的监督。我会修改这个问题。谢谢..我 – slotishtype 2012-04-09 16:22:45
我相信'kmeans()'也返回最后的集群中心。从那里,计算从每个点到其集群中心的距离应该不会太难。 – 2012-04-09 16:36:07