Pandas 中如何使用 Scikit-learn 进行层次聚类以获取聚类“中心”

Pandas 中如何使用 Scikit-learn 进行层次聚类以获取聚类“中心”

在本文中,我们将介绍如何使用 Pandas 和 Scikit-learn 进行层次聚类,并获取聚类“中心”。

阅读更多:Pandas 教程

什么是层次聚类?

层次聚类是一种将样本分组的无监督机器学习方法。其中,每个样本都被认为是一个单独的组,并且在聚类处理期间,样本逐渐合并到更高层组。这种方法可以通过树状图形式表示,根祖先代表所有样本,而叶节点代表单独样本。

具体地说,有两种类型的层次聚类——聚合和分裂。在此处,我们将关注聚合版本,即从单独的点开始并合并成更高层次结构的方法。

如何实现层次聚类

Scikit-learn 中提供了两种执行层次聚类的算法——凝聚层次聚类和分裂层次聚类。在此处,我们将使用 Scikit-learn 中的凝聚层次聚类方法。

首先,需要安装 Scikit-learn:

pip install -U scikit-learn

经过安装后,需要导入 Pandas 和 Scikit-learn:

import pandas as pd
from sklearn.cluster import AgglomerativeClustering

凝聚聚类可以通过在每次迭代期间将最相邻的点合并到一个组中来实现。在 Scikit-learn 中,可以使用 AgglomerativeClustering 类来实现此过程。

然后,我们需要准备一个数据集。在这里,我们将使用“鸢尾花”数据集:

from sklearn.datasets import load_iris

iris = load_iris()  # load iris dataset
X = pd.DataFrame(iris.data, columns=iris.feature_names)  # create a pandas dataframe

现在我们准备好了数据,可以使用 AgglomerativeClustering 来进行层次聚类:

clustering = AgglomerativeClustering(n_clusters=3).fit(X)

在这里,n_clusters 是我们想要创建的群集数。然后,您可以将 fit_predict 方法用于数据来执行群集分配:

X["cluster"] = clustering.fit_predict(X)

此时,每个样本都被分配到一个小组中。我们可以看一下最终的小组如何分布:

X["cluster"].value_counts()

这应该返回和打印出每个小组中的样本数。

如何获取聚类“中心”

我们已经成功地将数据集划分成了三个群集。现在,我们想要了解每个群集的“中心”位置,以便能够更好地理解您的数据。

在 Scikit-learn 中,可以使用 linkage 方法和 dendrogram 方法可视化或者进行计算。下面是一个可视化 dendrogram 的例子:

from scipy.cluster.hierarchy import dendrogram, linkage
import matplotlib.pyplot as plt

linked = linkage(X, 'single')
dendrogram(linked, orientation='top', distance_sort='descending', show_leaf_counts=True)
plt.show()

这将返回一个树状图,显示每个点的合并过程。更重要的是,您可以从中了解到群集的“中心”。

另外,可以使用 AgglomerativeClustering 对象:

print(clustering.cluster_centers_)

输出每个群集的中心。

总结

在本文中,我们学习了如何使用 Pandas 和 Scikit-learn 进行凝聚层次聚类,以及如何从聚类中获取“中心”。层次聚类是一种很强大的机器学习方法,可以帮助我们对未知数据进行分类和分组。同时,聚类的结果还可以通过中心的位置来探索数据结构和特征的分布,以便进行更深入的分析。

在使用 Scikit-learn 进行层次聚类时,我们需要掌握几个重要的概念,比如如何准备数据,如何进行聚类操作,以及如何获取“中心”信息。同时,我们还需要对每个概念进行实践,才能让自己更加熟练地掌握这些方法。

在未来的工作中,如果需要进行聚类分析,可以使用 Pandas 和 Scikit-learn 的组合来实现约定。此外,还可以继续深入探索 Scikit-learn 中的其他聚类算法,以便更好地理解聚类过程和方法。

总之,层次聚类是一种十分有用的机器学习方法,可以帮助我们对数据进行分组和分类。通过使用 Pandas 和 Scikit-learn,可以很容易地实现聚类操作和获取“中心”信息。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程