100-Days-Of-ML-Code:Day 54层次聚类INFO图深度解读
你是否还在为层次聚类(Hierarchical Clustering)的复杂原理感到困惑?是否在实际应用中难以把握聚类树的构建逻辑?本文将通过深度解读100-Days-Of-ML-Code项目中的Day 54 INFO图,帮助你在10分钟内掌握层次聚类的核心概念、算法流程和实战技巧。读完本文后,你将能够独立完成聚类树的绘制与分析,并理解如何通过Info-graphs/Day 54.jpg中的可视化方法直观呈现数据关系。
层次聚类核心概念解析
层次聚类(Hierarchical Clustering)是一种通过构建聚类树(Dendrogram)将数据样本逐层聚合或分裂的无监督学习算法。与K-Means等需要预先指定聚类数量的算法不同,层次聚类通过树形结构展示数据间的层级关系,适用于探索性数据分析。根据聚合策略的不同,可分为:
- 凝聚式(Agglomerative):从单个样本开始,逐步合并相似簇(Day 54 INFO图采用此策略)
- 分裂式(Divisive):从全样本簇开始,逐步分裂为子簇
关键距离度量方法
Info-graphs/readme.md中提到的每日INFO图均遵循"概念-流程-案例"结构,Day 54图重点标注了4种核心距离计算方式:
- 欧氏距离(Euclidean Distance):样本点间的直线距离,适用于连续型数据
- 曼哈顿距离(Manhattan Distance):坐标差绝对值之和,对异常值更稳健
- 余弦相似度(Cosine Similarity):向量夹角余弦值,常用于文本聚类
- 皮尔逊相关系数(Pearson Correlation):衡量变量间线性相关性
Day 54 INFO图算法流程详解
步骤1:数据预处理
与Code/Day 1_Data PreProcessing.md中的标准化流程一致,层次聚类需先对数据进行特征缩放:
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
data_scaled = scaler.fit_transform(data) # 均值为0,方差为1的标准化
步骤2:距离矩阵计算
根据INFO图左侧流程,首先计算所有样本间的距离矩阵。以欧氏距离为例:
from scipy.spatial.distance import pdist, squareform
distance_matrix = squareform(pdist(data_scaled, metric='euclidean'))
步骤3:聚类树构建
INFO图中部展示了凝聚式聚类的核心步骤:
- 初始化:每个样本为独立簇(n个簇)
- 合并:每次将距离最近的两个簇合并
- 更新:重新计算新簇与其他簇的距离(使用WARD法/平均距离法等)
- 终止:所有样本合并为单簇或达到预设簇数
from scipy.cluster.hierarchy import linkage, dendrogram
Z = linkage(data_scaled, method='ward') # WARD法最小化簇内方差
步骤4:聚类结果可视化
INFO图右侧展示了聚类树的绘制方法,通过横轴样本编号和纵轴距离值,直观呈现合并过程:
import matplotlib.pyplot as plt
plt.figure(figsize=(12, 6))
dendrogram(Z, labels=data_labels, leaf_rotation=90)
plt.axhline(y=15, color='r', linestyle='--') # 设定距离阈值切割聚类树
plt.show()
实战技巧与常见问题
聚类数确定方法
INFO图底部标注了两种主流簇数选择策略:
- 树高截断法:如上图中红色虚线所示,根据业务需求设定距离阈值
- 轮廓系数法:计算不同簇数下的平均轮廓系数,取最大值对应的k值
算法参数调优
在100-Days-Of-ML-Code项目实践中,需注意:
- 距离 metric 参数选择需匹配数据类型(连续型/离散型)
- linkage 方法对结果影响显著:WARD法适合球形簇,平均距离法适合非凸形状簇
- 样本量超过1000时建议使用
method='ward', metric='euclidean'组合提升效率
总结与扩展应用
Day 54 INFO图通过Each Day Infograph的标准化结构,清晰呈现了层次聚类从理论到实践的完整链路。该算法在客户分群、基因序列分析、文档主题聚类等领域有广泛应用。建议结合Code/目录下的其他监督学习算法(如Day 13 SVM.md)进行对比学习,构建完整的机器学习知识体系。
收藏本文,关注100-Days-Of-ML-Code项目获取更多INFO图解读,下期将带来"Day 55密度聚类(DBSCAN)实战案例"。如有疑问,可在项目README.md中查阅社区讨论或提交issue。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



