📅  最后修改于: 2023-12-03 15:25:23.606000             🧑  作者: Mango
层次聚类是一种无监督学习算法,可以将数据分成不同的群体或集群。层次聚类分为凝聚聚类和分裂聚类两种方法,其中凝聚聚类是将每个样本看作一个初始的簇,然后将相似的簇合并成新的簇,最终得到一棵树状结构的聚类结果。
在Python中,scikit-learn库提供了一个AgglomerativeClustering类,可以用于实现层次聚类凝聚。
首先,我们需要安装scikit-learn库。如果你使用Anaconda,可以在命令行中输入以下命令:
conda install scikit-learn
否则,你可以使用以下命令:
pip install -U scikit-learn
我们将使用Iris数据集来进行层次聚类凝聚。Iris数据集是一个三分类问题,包含150个样本,每个样本有四个特征(萼片长度、萼片宽度、花瓣长度和花瓣宽度)。可以使用下面的代码从scikit-learn库中加载Iris数据集:
from sklearn.datasets import load_iris
iris = load_iris()
X = iris.data
y = iris.target
接下来,我们使用AgglomerativeClustering类来实现层次聚类凝聚。在这个例子中,我们将选择三个聚类。
from sklearn.cluster import AgglomerativeClustering
clustering = AgglomerativeClustering(n_clusters=3)
clustering.fit(X)
最后,我们可以使用Matplotlib库将聚类结果可视化。下面的代码绘制了散点图,其中每个样本的颜色对应于其所属的聚类。
import matplotlib.pyplot as plt
plt.scatter(X[:, 0], X[:, 1], c=clustering.labels_)
plt.xlabel('Sepal length')
plt.ylabel('Sepal width')
plt.show()
输出结果如下:
从图中可以看出,大多数样本被成功地分成了三类。
层次聚类凝聚是一种无监督学习算法,可以将数据分成不同的群体或集群。在Python中,我们可以使用scikit-learn库的AgglomerativeClustering类来实现层次聚类凝聚。本文展示了如何将这种方法应用于Iris数据集,并可视化聚类结果。