📜  层次聚类凝聚 - Python (1)

📅  最后修改于: 2023-12-03 15:25:23.606000             🧑  作者: Mango

层次聚类凝聚 - Python

层次聚类是一种无监督学习算法,可以将数据分成不同的群体或集群。层次聚类分为凝聚聚类和分裂聚类两种方法,其中凝聚聚类是将每个样本看作一个初始的簇,然后将相似的簇合并成新的簇,最终得到一棵树状结构的聚类结果。

在Python中,scikit-learn库提供了一个AgglomerativeClustering类,可以用于实现层次聚类凝聚。

安装scikit-learn

首先,我们需要安装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()

输出结果如下:

iris_scatter_plot.png

从图中可以看出,大多数样本被成功地分成了三类。

总结

层次聚类凝聚是一种无监督学习算法,可以将数据分成不同的群体或集群。在Python中,我们可以使用scikit-learn库的AgglomerativeClustering类来实现层次聚类凝聚。本文展示了如何将这种方法应用于Iris数据集,并可视化聚类结果。