如何在R中创建集群图?

时间:2012-01-26 14:31:44

标签: r plot cluster-analysis

如何在不使用clustplot的情况下在R中创建聚类图?

我试图掌握一些聚类(使用R)和可视化(使用HTML5 Canvas)。

基本上,我想要创建一个cluster plot,但我想获得一组2D点或坐标,而不是绘制数据,我可以将其拉入画布并做一些可能相当的事情(但我不确定该怎么做)。我想象我:

  1. 为整个数据集创建相似度矩阵(使用dist)
  2. 使用kmeans或类似的东西(使用kmeans)对相似性矩阵进行聚类
  3. 使用MDS或PCA绘制结果 - 但我不确定步骤2和3如何关联(cmdscale)。
  4. 我已经检出了问题hereherehere(最后一个问题最常用)。

2 个答案:

答案 0 :(得分:30)

你的意思是这样吗? 抱歉,但我对HTML5 Canvas一无所知,只有R ...但我希望它有所帮助......

首先,我使用kmeans对数据进行聚类(请注意,我没有对距离矩阵进行聚类),而不是计算距离matix并使用cmdscale绘制它。然后我添加颜色到MDS图,对应于由kmeans识别的组。还有一些不错的附加图形功能。

您可以访问cmdscale创建的对象的坐标。

### some sample data
require(vegan)
data(dune)

# kmeans
kclus <- kmeans(dune,centers= 4, iter.max=1000, nstart=10000)

# distance matrix
dune_dist <- dist(dune)

# Multidimensional scaling
cmd <- cmdscale(dune_dist)

# plot MDS, with colors by groups from kmeans
groups <- levels(factor(kclus$cluster))
ordiplot(cmd, type = "n")
cols <- c("steelblue", "darkred", "darkgreen", "pink")
for(i in seq_along(groups)){
  points(cmd[factor(kclus$cluster) == groups[i], ], col = cols[i], pch = 16)
}

# add spider and hull
ordispider(cmd, factor(kclus$cluster), label = TRUE)
ordihull(cmd, factor(kclus$cluster), lty = "dotted")

enter image description here

答案 1 :(得分:0)

您可以在此处找到一个图表来分析“clusplot”包中的群集结果“坐标图”。

它不是基于PCA。它使用函数比例使所有变量意味着在0到1的范围内,因此您可以比较哪个聚类保持每个变量的最大/最小平均值。

install.packages("devtools") ## To be able to download packages from github
library(devtools)
install_github("pablo14/clusplus")
library(clusplus)

## Create k-means model with 3 clusters
fit_mtcars=kmeans(mtcars,3)

## Call the function
plot_clus_coord(fit_mtcars, mtcars)

This post解释了如何使用它。