层次聚类是一种无监督学习算法,用于将数据集中的对象分组为具有相似性的簇。本文将介绍层次聚类的基本概念、算法步骤以及如何使用Python进行层次聚类分析。
基本概念
- 簇(Cluster):一组相似的对象集合。
- 相似度:衡量对象之间相似性的指标,常用的相似度度量方法有欧氏距离、曼哈顿距离等。
- 距离矩阵:表示数据集中所有对象之间相似度的矩阵。
算法步骤
- 计算距离矩阵:首先计算数据集中所有对象之间的相似度,并构建距离矩阵。
- 构建层次树:根据距离矩阵,将对象逐步合并成簇,并构建层次树。
- 选择簇:根据层次树,选择合适的簇数,将对象分配到相应的簇中。
Python实现
以下是一个使用Python进行层次聚类的示例代码:
import numpy as np
import matplotlib.pyplot as plt
from scipy.cluster.hierarchy import dendrogram, linkage
# 创建数据集
data = np.array([[1, 2], [2, 3], [3, 5], [5, 4], [4, 6]])
# 计算距离矩阵
Z = linkage(data, 'ward')
# 绘制层次树
plt.figure(figsize=(10, 7))
dendrogram(Z)
plt.title('层次树')
plt.xlabel('样本')
plt.ylabel('距离')
plt.show()
扩展阅读
图片展示
层次聚类算法的层次树示例: