如何在 R 中创建聚类图?

Posted

技术标签:

【中文标题】如何在 R 中创建聚类图?【英文标题】:How to create a cluster plot in R? 【发布时间】:2012-02-19 15:15:31 【问题描述】:

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

我正在尝试掌握一些聚类(使用 R)和可视化(使用 html5 Canvas)。

基本上,我想创建一个cluster plot,但我不想绘制数据,而是想获得一组 2D 点或坐标,我可以将其拉入画布并做一些可能很漂亮的事情(但我不确定如何去做这个)。我会想象我:

    为整个数据集创建一个相似度矩阵(使用 dist) 使用 kmeans 或类似的东西(使用 kmeans)对相似度矩阵进行聚类 使用 MDS 或 PCA 绘制结果 - 但我不确定第 2 步和第 3 步如何关联 (cmdscale)。

我检查了here、here 和here 的问题(最后一个最常用)。

【问题讨论】:

【参考方案1】:

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

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

您可以通过 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")

【讨论】:

感谢@EDi,这真的很棒。所以,为了澄清,你聚类然后构建一个相似矩阵。然后,您使用 MDS 在 2D 中定位点,然后根据它们与集群的关系为这些点着色。杰出的。如果你有机会,你能解释一下这是做什么的:groups 查看我的编辑。 groups 只是一个包含组名称的对象,仅用于 for 循环。 好的,我看到你的编辑了。最后一个问题,你能聚类距离矩阵还是一个疯狂的举动?抱歉,目前正在学习,只是按照自己的方式完成工作。【参考方案2】:

您可以在此处找到一个用于分析聚类结果的图表,“坐标图”,位于“clusplot”包中。

它不是基于 PCA。它使用函数 scale 使所有变量均值在 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 解释如何使用它。

【讨论】:

以上是关于如何在 R 中创建聚类图?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用pyqt5在UI的graphWidget中显示K表示聚类图?

使用 _PARTITIONTIME 从现有表在 BigQuery 中创建聚簇表

R语言绘图——层次聚类图及树状图添加side bar

R语言ggplot2可视化可视化聚类图使用geom_encircle函数绘制多边形标定属于同一聚类簇的数据点并自定义每个聚类簇数据点的颜色多边形框的颜色(Cluster Plot)主副标题题注

如何绘制集群的集群内平方和图?

如何评估 R 中的 kmeans 聚类性能