在r中绘制kmeans聚类的结果

时间:2016-02-21 12:40:18

标签: r plot cluster-analysis k-means

我有一个包含1599个观察数据和10个属性的数据集,我们需要进行kmeans聚类。我已经完成了6个集群的kmeans,我可以看到集群中心,大小等,以及哪个观察点在哪个集群中。现在,我需要绘制这些结果,以便在单个图中显示以下信息:在x轴上,我想要原始数据的10个属性中的1个,在y轴上我想要另一个属性,在图中,我想要所有1599个观测值,但我想要它们所属的每个星团有6种不同的颜色。所以,我将有10C2 = 45个图。基本上,这应该给我一个信息,即集群1在特定属性方面是高/中/低,而集群2是如此......对于所有6个集群。

我尝试了fpc包中的plotcluster函数,但根据我的理解,它使用PCA将数据映射到2D,然后根据与原始属性不同的2维绘制聚类。所以现在当我说集群1很低时,在dim1中,它真的没有多大意义。

是否有功能可以执行我想要的功能,或者我是否应该添加' $ cluster'来自kmeans输出的信息和我的原始数据,并尝试使用基本函数plot()一次从我的数据中取两列?

1 个答案:

答案 0 :(得分:0)

我建议使用一种解决方案,可能不是最简单的解决方案(使用for循环),但似乎可以回答您的需求:

df=mtcars
df$cluster = factor( kmeans(df, centers=6)$clust )
mycomb <- combn(1:ncol(df), 2)
for (xy in 1:45 ) {
  plot(x=df[, mycomb[1,xy]], 
       y=df[, mycomb[2,xy]], 
       col=as.numeric(df$clust), 
       xlab=names(df)[mycomb[1,xy]],
       ylab=names(df)[mycomb[2,xy]])
}