推荐答案
在 R 语言中,可以使用 hclust() 函数进行层次聚类。以下是一个简单的示例代码:
// www.javascriptcn.com code example # 生成示例数据 data <- matrix(rnorm(100), ncol = 5) # 计算距离矩阵 dist_matrix <- dist(data) # 进行层次聚类 hc <- hclust(dist_matrix, method = "complete") # 绘制树状图 plot(hc)
本题详细解读
1. 数据准备
首先,我们需要准备一个数据集。在这个示例中,我们使用 matrix() 函数生成一个 20 行 5 列的随机矩阵,模拟一个包含 20 个样本和 5 个特征的数据集。
2. 计算距离矩阵
层次聚类的第一步是计算样本之间的距离矩阵。在 R 中,可以使用 dist() 函数来计算距离矩阵。dist() 函数默认使用欧几里得距离,但你也可以通过 method 参数指定其他距离度量方法,如 "manhattan"、"maximum" 等。
3. 进行层次聚类
接下来,我们使用 hclust() 函数进行层次聚类。hclust() 函数的主要参数是距离矩阵和聚类方法。常见的聚类方法包括:
"complete":完全连接法(默认方法)"single":单连接法"average":平均连接法"ward.D"或"ward.D2":Ward 方法
4. 绘制树状图
最后,我们可以使用 plot() 函数绘制层次聚类的树状图(dendrogram)。树状图可以帮助我们直观地理解聚类的层次结构。
5. 其他操作
除了绘制树状图,你还可以使用 cutree() 函数将层次聚类的结果切割成指定数量的簇。例如:
# 将聚类结果切割成 3 个簇 clusters <- cutree(hc, k = 3)
这将返回一个向量,表示每个样本所属的簇。