100-Days-Of-ML-Code:Day 54层次聚类INFO图深度解读

100-Days-Of-ML-Code:Day 54层次聚类INFO图深度解读

【免费下载链接】100-Days-Of-ML-Code 100 Days of ML Coding 【免费下载链接】100-Days-Of-ML-Code 项目地址: https://gitcode.com/gh_mirrors/10/100-Days-Of-ML-Code

你是否还在为层次聚类(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种核心距离计算方式:

  1. 欧氏距离(Euclidean Distance):样本点间的直线距离,适用于连续型数据
  2. 曼哈顿距离(Manhattan Distance):坐标差绝对值之和,对异常值更稳健
  3. 余弦相似度(Cosine Similarity):向量夹角余弦值,常用于文本聚类
  4. 皮尔逊相关系数(Pearson Correlation):衡量变量间线性相关性

Day 54 INFO图算法流程详解

![层次聚类算法流程图](https://raw.gitcode.com/gh_mirrors/10/100-Days-Of-ML-Code/raw/5d67810c1498082e7bb262cf6397d7861dfd9891/Info-graphs/Day 54.jpg?utm_source=gitcode_repo_files)

步骤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图中部展示了凝聚式聚类的核心步骤:

  1. 初始化:每个样本为独立簇(n个簇)
  2. 合并:每次将距离最近的两个簇合并
  3. 更新:重新计算新簇与其他簇的距离(使用WARD法/平均距离法等)
  4. 终止:所有样本合并为单簇或达到预设簇数
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图底部标注了两种主流簇数选择策略:

  1. 树高截断法:如上图中红色虚线所示,根据业务需求设定距离阈值
  2. 轮廓系数法:计算不同簇数下的平均轮廓系数,取最大值对应的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。

【免费下载链接】100-Days-Of-ML-Code 100 Days of ML Coding 【免费下载链接】100-Days-Of-ML-Code 项目地址: https://gitcode.com/gh_mirrors/10/100-Days-Of-ML-Code

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值