0

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

km = kmeans(mat2, centers = 4)

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

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. 是否有现有的软件包或工具可以让我更轻松地完成这项工作?

非常感谢所有帮助!

4

1 回答 1

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,]
于 2013-03-07T23:13:31.647 回答