【Python机器学习】凝聚聚类——层次聚类与树状图

凝聚聚类生成了所谓的层次聚类。聚类过程迭代进行,每个点都从一个单点簇变为属于最终的某个簇。每个中间步骤都提供了数据的一种聚类(簇的个数也不相同)。有时候,同时查看所有可能的聚类也是有帮助的。

举例:

python 复制代码
import matplotlib.pyplot as plt
import mglearn.plots

mglearn.plots.plot_agglomerative()
plt.show()

虽然这种可视化为层次聚类提供了非常详细的视图,但它依赖于数据的二维性质,因此不能呢个用于具有两个特征的数据集。但还有另一个层次聚类可视化的工具,那就是树状图,它可以处理多维数据集。

可以利用SciPy生成树状图,SciPy的聚类算法接口与scikit-learn的聚类算法稍有不同。SciPy提供了一个函数,然后接收数组X并计算出一个链接数组,它对层次聚类的相似度进行编码。然后我们就可以将这个链接数组提供给scipy的dendrogram函数来绘制树状图。

python 复制代码
import matplotlib.pyplot as plt
import mglearn.plots
from scipy.cluster.hierarchy import dendrogram,ward
from sklearn.datasets import make_blobs,make_moons


X,y=make_blobs(random_state=0,n_samples=12)
linkage_array=ward(X)
dendrogram(linkage_array)

ax=plt.gca()
bounds=ax.get_xbound()
ax.plot(bounds,[7.25,7.25],'--',c='k')
ax.plot(bounds,[4,4],'--',c='k')

ax.text(bounds[1],7.25,'2',va='center',fontdict={'size':15})
ax.text(bounds[1],4,'3',va='center',fontdict={'size':15})
plt.xlabel('Sample index')
plt.ylabel('Cluster distance')
plt.show()

树状图在底部显示数据点(0到11),然后以这些点作为叶节点绘制一棵树,每合并两个簇就添加一个新的父节点。

从下往上看,数据点1、4首先被合并,接下来,6、9被合并为一个簇,以此类推。

树状图的y轴不仅说明凝聚算法中两个簇合适合并,每个分支的长度还表示被合并的簇之间的距离。在这个树状图中,最长的分支是用标记为'3'的虚线表示。

相关推荐
小雷FansUnion1 小时前
深入理解MCP架构:智能服务编排、上下文管理与动态路由实战
人工智能·架构·大模型·mcp
资讯分享周1 小时前
扣子空间PPT生产力升级:AI智能生成与多模态创作新时代
人工智能·powerpoint
sealaugh322 小时前
aws(学习笔记第四十八课) appsync-graphql-dynamodb
笔记·学习·aws
水木兰亭2 小时前
数据结构之——树及树的存储
数据结构·c++·学习·算法
思则变2 小时前
[Pytest] [Part 2]增加 log功能
开发语言·python·pytest
叶子爱分享2 小时前
计算机视觉与图像处理的关系
图像处理·人工智能·计算机视觉
鱼摆摆拜拜2 小时前
第 3 章:神经网络如何学习
人工智能·神经网络·学习
一只鹿鹿鹿2 小时前
信息化项目验收,软件工程评审和检查表单
大数据·人工智能·后端·智慧城市·软件工程
张较瘦_3 小时前
[论文阅读] 人工智能 | 深度学习系统崩溃恢复新方案:DaiFu框架的原位修复技术
论文阅读·人工智能·深度学习
cver1233 小时前
野生动物检测数据集介绍-5,138张图片 野生动物保护监测 智能狩猎相机系统 生态研究与调查
人工智能·pytorch·深度学习·目标检测·计算机视觉·目标跟踪