凝聚聚类是一种聚类算法,它通过一系列步骤逐步合并最相似的簇,直至满足特定的终止条件。在scikit-learn中,终止条件通常是簇的数量。为了确定两个簇之间的相似度,算法采用不同的链接准则,如ward、average和complete。
ward方法通常适用于大多数数据,但如果簇的大小差异较大,使用average和complete可能会更合适。
接下来,我们使用make_blobs
数据集来展示凝聚聚类的效果。由于凝聚聚类没有predict
方法,我们使用fit_predict
方法来进行聚类。结果显示,算法成功地将数据点分为三个簇。
此外,凝聚聚类还生成了层次结构,这可以通过层次凝聚和树状图来观察。尽管scikit-learn本身没有提供绘制树状图的功能,但可以使用Scipy来实现。通过绘制树状图,我们可以更直观地看到数据点是如何逐步合并成簇的。
例如,我们使用ward
方法处理一个包含12个样本的数据集,并生成了一个链接数组。接着,我们使用Scipy的dendrogram
函数绘制树状图。图中的虚线分别标记了将数据划分为两个簇和三个簇的位置,展示了数据点合并的过程。
尽管凝聚聚类在处理复杂形状的数据(如two_moons数据集)时表现不佳,但通过层次凝聚和树状图,我们可以更好地理解数据点的分布和聚类过程。接下来,我们将探讨另一种聚类算法——DBSCAN,以应对这类复杂情况。