- • 层次聚类不需要预设K值
- • 树状图展示完整层次结构
- • 可在任意层次切割获得聚类
- • 计算复杂度较高
8.2 层次聚类
构建数据的层次结构
🎯 学习目标
- 理解层次聚类的原理
- 掌握凝聚与分裂方法
- 学会解读树状图
- 了解层次聚类的应用场景
📊 两种策略
凝聚(自底向上)
每个点初始为一类,逐步合并
# 流程
1. 每个点一个簇
2. 合并最近的两个簇
3. 重复直到只剩一个簇
分裂(自顶向下)
所有点初始为一类,逐步分裂
# 流程
1. 所有在一个簇
2. 分裂最不相似的簇
3. 重复直到每个点一簇
💻 sklearn实现
from sklearn.cluster import AgglomerativeClustering
from scipy.cluster.hierarchy import dendrogram, linkage
import matplotlib.pyplot as plt
# 凝聚聚类
agg = AgglomerativeClustering(
n_clusters=3,
linkage='ward' # 离差平方和最小
)
labels = agg.fit_predict(X)
# 绑制树状图
Z = linkage(X, method='ward')
plt.figure(figsize=(12, 6))
dendrogram(Z)
plt.title('层次聚类树状图')
plt.show()
📝 本节小结
✅