【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实现需要你指定希望算法寻找的簇的个数,但凝聚聚类方法为选择正确的个数提供了一些帮助。

相关推荐
IT古董28 分钟前
【深度学习】常见模型-Transformer模型
人工智能·深度学习·transformer
沐雪架构师1 小时前
AI大模型开发原理篇-2:语言模型雏形之词袋模型
人工智能·语言模型·自然语言处理
python算法(魔法师版)2 小时前
深度学习深度解析:从基础到前沿
人工智能·深度学习
小王子10242 小时前
设计模式Python版 组合模式
python·设计模式·组合模式
kakaZhui3 小时前
【llm对话系统】大模型源码分析之 LLaMA 位置编码 RoPE
人工智能·深度学习·chatgpt·aigc·llama
charlie1145141913 小时前
从0开始使用面对对象C语言搭建一个基于OLED的图形显示框架(协议层封装)
c语言·驱动开发·单片机·学习·教程·oled
struggle20253 小时前
一个开源 GenBI AI 本地代理(确保本地数据安全),使数据驱动型团队能够与其数据进行互动,生成文本到 SQL、图表、电子表格、报告和 BI
人工智能·深度学习·目标检测·语言模型·自然语言处理·数据挖掘·集成学习
佛州小李哥4 小时前
通过亚马逊云科技Bedrock打造自定义AI智能体Agent(上)
人工智能·科技·ai·语言模型·云计算·aws·亚马逊云科技
追求源于热爱!4 小时前
记5(一元逻辑回归+线性分类器+多元逻辑回归
算法·机器学习·逻辑回归
Mason Lin4 小时前
2025年1月22日(网络编程 udp)
网络·python·udp