2013-03-07 58 views
0

我使用下面的执行k均值分析:[R k均值数据点

km = kmeans(mat2, centers = 4) 

我还策划使用library(fpc)获得视觉如下k均值分析:

plotcluster(mat2, km$cluster) 

这里结果为:enter image description here

mat2的每一行对应图中的一个点。我给每个行中的矩阵的名称改为:

rownames(mat2) = names  #names is a vector corresponding to the rows of mat2 

我可以通过下面的属性发现每行的矩阵中的成员:

km$cluster 

这使得每行的名称在矩阵中,随后是图中相应的整数。但是,我想访问更多的数据。

如何从这些集群点访问更多数据?例如,我想找出图中整数与矩阵中行之间的对应关系。为了澄清,回答这个问题可以让我知道矩阵中的哪一行对应于图中最高的2个?一旦我知道哪些整数对应于矩阵中的哪些行,那么我有矩阵中每行的名称,并可以给出有意义的解释。

我还想找出图中一个点与它所属的集群中心之间的距离度量。我可以得到图中(x,y)坐标与矩阵中行之间的对应关系吗?我可以得到一个交互式图形用户界面,当我点击图中的一个聚类点时,我可以看到更多上述的一些数据?我愿意使用不同的图库进行绘图。总结为两个问题:

  1. 我怎样才能得到图中的整数与矩阵中的行之间的对应关系?
  2. 有没有现成的软件包或工具可以让我更容易?

非常感谢所有帮助!

+0

你在问几个不连贯的问题,这样一个答案将无法涵盖所有​​问题。考虑改进? – alexwhan 2013-03-07 22:23:53

+0

底部的问题澄清了主要问题。 – CodeKingPlusPlus 2013-03-07 22:29:43

+0

'str(mat2)'的输出是什么? – alexwhan 2013-03-07 22:57:19

回答

1

这是回答你的一些问题,但那里有很多。如果你想与你的情节进行互动以确定积分,你可以看看?identify。这里有一个解决你使用的特定行的答案。如果你想问一些关于交互式GUI的问题,可能会发表一个关于这个问题的具体问题

mat <- matrix(rnorm(160), ncol=2) 
km <- kmeans(mat, centers=4) 
df <- as.data.frame(cbind(mat, km$cluster)) 
names(df) <- c("Var1", "Var2", "cluster") 

#Get the row of df with highest Var1 and cluster == 2 
which(df$Var1 == max(df$Var1[df$cluster==2])) 
# 76 

#Use this to extract the row 
df[which(df$Var1 == max(df$Var1[df$cluster==2])),] 

#You can subset you data based on one of the variables 
#Get the rows with cluster == 2 
df.2 <- df[df$cluster == 2,] 
+0

我真的不想从群集中找到具有最高方差的点的矩阵行,这只是一个帮助澄清的例子。我想找到任何点的矩阵行。 – CodeKingPlusPlus 2013-03-07 23:20:03

+0

那么,为什么你没有勾选这个时,你正在寻求的答案已被给予? – 2013-03-07 23:31:58

+0

最初没有意识到这是我寻找的地图! – CodeKingPlusPlus 2013-03-08 15:46:51