📅  最后修改于: 2023-12-03 15:19:40.965000             🧑  作者: Mango
层次聚类是一种分层建立聚类的方法。它根据对象间的相似性(或距离)将它们逐渐归并成一些较大的组。这种方法又分为两种:自底向上的聚合聚类和自顶向下的分裂聚类。本文将介绍在 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 中的层次聚类方法对数据集进行分类,从而方便我们对数据进行快速查询和分类,对于数据的处理和分析有很大的帮助。