📜  R 编程中的层次聚类(1)

📅  最后修改于: 2023-12-03 15:19:40.965000             🧑  作者: Mango

R 编程中的层次聚类

层次聚类是一种分层建立聚类的方法。它根据对象间的相似性(或距离)将它们逐渐归并成一些较大的组。这种方法又分为两种:自底向上的聚合聚类和自顶向下的分裂聚类。本文将介绍在 R 编程中如何使用聚合聚类进行层次聚类分析。

准备工作

在 R 中进行层次聚类前,我们需要准备相应的数据集。这里我们使用 R 自带的 iris 数据集作为示例。它包含了 150 条记录,每条记录有 4 个数值型属性 Sepal.Length、Sepal.Width、Petal.Length 和 Petal.Width,分别代表花萼长度、花萼宽度、花瓣长度和花瓣宽度,另外还有一个 Species 字段代表鸢尾花的属种,包括三种 versicolor、virginica 和 setosa。

data(iris)
head(iris)
  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1          5.1         3.5          1.4         0.2  setosa
2          4.9         3.0          1.4         0.2  setosa
3          4.7         3.2          1.3         0.2  setosa
4          4.6         3.1          1.5         0.2  setosa
5          5.0         3.6          1.4         0.2  setosa
6          5.4         3.9          1.7         0.4  setosa
聚合聚类

在 R 中进行层次聚类我们可以使用 hclust 函数。它的语法为:

hclust(d, method = "complete", members = NULL)

其中 d 表示距离矩阵,必须是对称矩阵;method 表示聚类方法,支持多种聚类方式,例如:

  • complete:最大距离法;
  • average:平均距离法;
  • single:最小距离法;
  • ward.D:Ward 方差最小化法。

这里我们采用 complete 方法进行聚类:

# 计算距离矩阵
d <- dist(iris[, -5], method = "euclidean")

# 进行层次聚类
fit <- hclust(d, method = "complete")

# 绘制聚类树状图
plot(fit, hang = -1, main = "层次聚类树")

代码执行结果如下图所示:

层次聚类树状图

从上图中我们可以看到,R 将样本分为了三个簇,分别对应三种属种。

结论

通过上面的示例,我们可以使用 R 中的层次聚类方法对数据集进行分类,从而方便我们对数据进行快速查询和分类,对于数据的处理和分析有很大的帮助。