【Python机器学习】凝聚聚类

凝聚聚类指的是许多基于相同原则构建的聚类算法,这一原则是:算法首先声明每个点是自己的簇,然后合并两个最相似的簇,知道满足某种停止准则为止。scikit-learn中实现的停止准则是簇的个数,因此相似的簇被合并,直到仅剩下指定个数的簇。还有一些链接准则,规定如何度量"最相似的簇"。这种度量总是定义在两个现有的簇之间。

scikit-learn中实现了以下三种选项:

ward:默认选项。ward挑选两个簇来合并,使得所有簇中的方差增加最小。这通常会得到大小差不多的簇。

average:average链接将簇中所有点之间平均距离最小的两个簇合并。

complete:complete链接(也称为最大链接)将簇中点之间最大距离最小的两个簇合并。

ward适用于大多数数据集,在我们的例子中将使用它。如果簇中的成员个数非常不同(比如其中一个比其他所有都大得多),那么average或complete可能效果更好。

举例:

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

mglearn.plots.plot_agglomerative_algorithm()
plt.show()

最开始,每个点自成一簇。然后在每个步骤中,相聚最近的两个簇合并。

在前四个步骤中,选出两个单点簇并将其合并成两点簇。在步骤5中,其中一个两点簇被扩展到三个点,以此类推,在步骤9中,只剩下三个簇,由于我们指定寻找3个簇,因此是算法结束。

来看一下凝聚聚类对最简单的三簇数据效果如何。由于算法的工作原理,凝聚算法不能对新数据点做出预测。因此凝聚聚类没有predict方法。为了构造模型并得到训练集上簇的成员关系,可以改用fit_predict方法:

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


agg=AgglomerativeClustering(n_clusters=3)
X,y=make_blobs(random_state=1)
assignment=agg.fit_predict(X)

mglearn.discrete_scatter(X[:,0],X[:,1],assignment)
plt.xlabel('Feature 0')
plt.ylabel('Feature 1')
plt.show()

如图,算法完美的完成了聚类。虽然凝聚聚类的scikit-learn实现需要你指定希望算法寻找的簇的个数,但凝聚聚类方法为选择正确的个数提供了一些帮助。

相关推荐
wshzd2 分钟前
LLM之Agent(114)|DeepSeek-Harness(二十一)内置工具全解析
人工智能
databook3 分钟前
MinMax vs Standard vs Robust:三种特征缩放怎么选
python·机器学习·数据分析
木圭的AI时代指南4 分钟前
MiniCPM-V 4.7 35B-A3B 本地部署实录:RTX 3070 8GB 显存跑多模态,36 token/s
人工智能·ai·本地部署·openbmb·端侧大模型·minicpm-v 4.7
在世修行5 分钟前
智学文枢:实体模型层
python·orm·sqlalchemy
loulanyue_8 分钟前
评估范式不变,自进化注定过拟合:大模型高维能力曲面探测与效用定律破局——读复旦大学曹艺馨机器之心AI Insider访谈
深度学习·机器学习
温迪的AI分享11 分钟前
2026实测AI图片翻译工具:3款工具横向效果对比
人工智能
xianghongtao011612 分钟前
arxiv_agents_review_2026-10-16
人工智能·深度学习·机器学习
wflynn13 分钟前
Google Gemini 4 Argon:用一个模型完成机器人训练全流程
人工智能·ai
知识分享小能手15 分钟前
C学习教程,从入门到精通,C语言指针 —— 详细知识点总结(10)
c语言·开发语言·学习
熊猫钓鱼>_>17 分钟前
开源鸿蒙平台 KMP 三方库 kotlin-csv 适配全流程:从编码假设到沙箱真机互通验证
开发语言·人工智能·华为·kotlin·harmonyos·鸿蒙