R kmeans数据点

时间:2013-03-07 22:06:56

标签: r statistics k-means correspondence

我正在使用以下内容执行kmeans分析:

km = kmeans(mat2, centers = 4)

我还使用library(fpc)绘制了kmeans分析,以获得如下视觉效果:

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)坐标与矩阵中行之间的对应关系吗?我可以获得一个交互式GUI,这样当我点击图中的一个簇点时,我可以看到更多上面描述的一些数据吗?我愿意使用不同的库进行绘图。总结为两个问题:

  1. 如何获得绘图中的整数与矩阵中的行之间的对应关系?
  2. 是否有现成的软件包或工具可以让我更轻松?
  3. 非常感谢所有帮助!

1 个答案:

答案 0 :(得分: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,]