【问题标题】:R kmeans data pointsR kmeans 数据点
【发布时间】:2013-02-23 07:56:13
【问题描述】:

我正在使用以下方法进行 kmeans 分析:

km = kmeans(mat2, centers = 4)

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

plotcluster(mat2, km$cluster)

结果如下:

mat2 的每一行对应图中的一个点。我给矩阵中的每一行取了一个名字:

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

我可以通过以下属性找到矩阵中每一行的隶属关系:

km$cluster

这给出了矩阵中每一行的名称,后跟图中对应的整数。不过,我想访问更多数据。

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

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

  1. 如何获得图中的整数与矩阵中的行之间的对应关系?
  2. 是否有现有的包或工具可以让我更轻松地完成这项工作?

非常感谢所有帮助!

【问题讨论】:

  • 您在问几个离散的问题,因此一个答案无法涵盖所有​​问题。考虑提炼?
  • 底部的问题澄清了主要问题。
  • str(mat2) 的输出是什么?
  • 矩阵的维度是291 X 31。那么每一行都有一个名字。
  • “获取图中的整数和矩阵中的行之间的对应关系”可以使用一种称为“刷”的技术来完成。我已经在 S-Plus 中使用了该技术,效果很好,但在 R 中没有。(iPlots)[rosuda.org/iplots/iplots.html] 是 R 的一个图形包,似乎包括刷牙作为一项功能——正如我所说,我没有不过用过。

标签: r statistics k-means correspondence


【解决方案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,]

【讨论】:

  • 我真的不想从集群中找到具有最高方差的点的矩阵行,这只是一个帮助澄清的例子。我想找到任意点的矩阵行。
  • 那么当你正在寻找的答案已经给出时,你为什么不勾选这个???
  • 起初没有意识到这是我要找的映射!
猜你喜欢
  • 2015-12-03
  • 2018-07-31
  • 2013-04-29
  • 2013-08-05
  • 2017-06-01
  • 2012-04-21
  • 2018-04-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多