hierarchical-agglomerative-clustering-from-scratch
分层聚类(Hierarchical Agglomerative Clustering,HAC)是一种无监督学习方法,用于将数据集中的对象根据相似性或距离进行分组,形成一个层次结构的聚类树,也称为 dendrogram。从头开始实现 HAC,我们需要理解以下几个关键概念和步骤: 1. **距离度量**:在 HAC 中,我们首先需要定义一个度量标准来衡量不同对象之间的相似度或距离。常见的距离度量有欧几里得距离、曼哈顿距离、余弦相似度等。选择合适的距离度量对聚类结果至关重要。 2. **单链连接**、**完全链连接** 和 **平均链连接**:这些是三种常见的聚类准则。在单链连接中,两个簇被合并的条件是最小的对间距离;完全链连接则要求最大的对间距离;平均链连接考虑的是两簇所有对间距离的平均值。不同的连接规则会影响最终的聚类结构。 3. **初始化**:HAC 的起点通常是每个对象为一个单独的簇,即 n 个对象形成 n 个簇。n 是数据集中对象的数量。 4. **合并策略**:在每一步,我们会找到当前距离最近的两个簇,并将其合并为一个新的簇。这个过程会更新簇与簇之间的距离矩阵。 5. **停止条件**:HAC 进行到何时停止通常取决于用户设定的阈值或期望的簇数量。当满足特定条件时(例如,只剩下一个簇或达到预设的簇数),聚类过程结束。 6. **构建 dendrogram**:dendrogram 是 HAC 的可视化表示,它显示了对象或簇在聚类过程中的合并顺序。树状图的底部代表原始对象,随着高度增加,对象被逐渐合并成更大的簇。 从头实现 HAC,我们需要编写以下函数: - 计算距离矩阵:根据选定的距离度量,计算所有对象对之间的距离。 - 更新距离矩阵:每次合并两个簇后,需要更新距离矩阵,反映新的簇之间的距离。 - 寻找最近的簇:找到当前距离最近的两个簇。 - 聚类合并:执行合并操作并更新聚类树。 - 构建 dendrogram:根据聚类树生成 dendrogram 图形。 在“hierarchical-agglomerative-clustering-from-scratch-main”这个文件夹中,可能包含的代码有: 1. `distance_metrics.py`:定义各种距离度量函数。 2. `clustering_algorithms.py`:实现 HAC 的核心算法,包括初始化、合并策略等。 3. `dendrogram.py`:用于绘制 dendrogram 的代码。 4. `main.py`:主程序,调用以上模块,读取数据,执行聚类并展示结果。 实际应用中,HAC 可用于多种场景,如市场细分、生物学中的基因表达数据分析、社交网络分析等。虽然 HAC 有良好的解释性和直观的可视化,但其主要缺点是计算复杂度高,不适合大规模数据集。此外,选择合适的距离度量和聚类准则对于得到有意义的聚类至关重要。
- 1
- 粉丝: 27
- 资源: 4663
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助