🎯 学习目标

  • 理解层次聚类的原理
  • 掌握凝聚与分裂方法
  • 学会解读树状图
  • 了解层次聚类的应用场景

📊 两种策略

凝聚(自底向上)

每个点初始为一类,逐步合并

# 流程 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()

📝 本节小结

  • • 层次聚类不需要预设K值
  • • 树状图展示完整层次结构
  • • 可在任意层次切割获得聚类
  • • 计算复杂度较高