Python实现简单层次聚类算法及可视化教程

周末不加班
周末不加班
发布时间:2026-10-13| 4人浏览过
原创

本文介绍如何使用Python实现基础的层次聚类算法,通过计算组间最小距离进行迭代合并,并配合可视化展示聚类结果。代码包含数据生成、距离计算及绘图功能,适合初学者理解聚类原理与Python编程实践。

Python层次聚类算法实现与可视化

本文分享使用Python实现基础层次聚类算法及其可视化效果的具体代码,供读者参考学习。

该算法的核心逻辑是:在每一步迭代中,找出当前所有组之间距离最小的两个组合并为一个新组。

不同聚类算法的区别主要在于如何定义组间的距离,常见的定义方式包括最大距离、最小距离、平均距离以及马氏距离等。

具体实现代码如下所示:


import numpy as np
import data_helper
np.random.seed(1)
def get_raw_data(n):
 _data=np.random.rand(n,2)
 #生成数据的格式是n个(x,y)
 _groups={idx:[[x,y]] for idx,(x,y) in enumerate(_data)}
 return _groups
def cal_distance(cluster1,cluster2):
 #采用最小距离作为聚类标准
 _min_distance=10000
 for x1,y1 in cluster1:
  for x2,y2 in cluster2:
   _distance=(x1-x2)**2+(y1-y2)**2
   if _distance<_min_distance:
    _min_distance=_distance
 return _distance
groups=get_raw_data(10)
count=0
while len(groups)!=1:#判断是不是所有的数据是不是归为了同一类
 min_distance=10000
 len_groups=len(groups)
 
 for i in groups.keys():
  for j in groups.keys():
   if i>=j:
    continue
   distance=cal_distance(groups[i],groups[j])
   if distance<min_distance:
    min_distance=distance
    min_i=i
    min_j=j#这里的j>i
 groups[min_i].extend(groups.pop(min_j))
 data_helper.draw_data(groups)
 #一共n个簇,共迭代n-1次

程序运行效果为每执行一次迭代,数据组的数量减少一个。通过调用绘图函数,同一聚类组内的数据点将以相同的颜色显示。

以上内容为本文的全部分享,希望能为读者的学习提供有益帮助,同时也欢迎大家继续支持本站。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。