我正在使用以下内容执行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,这样当我点击图中的一个簇点时,我可以看到更多上面描述的一些数据吗?我愿意使用不同的库进行绘图。总结为两个问题:
非常感谢所有帮助!
答案 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,]