使用 Python 探索 K 均值聚类

Beginner

This tutorial is from open-source community. Access the source code

简介

在本实验中,我们将探索 K 均值聚类算法及其在 Python 中使用 scikit-learn 库的实现。聚类是一种无监督学习,它涉及根据数据点的相似性将它们分组到不同的簇中。K 均值聚类是一种流行的聚类算法,广泛应用于图像处理、生物信息学和市场研究等各个领域。

虚拟机使用提示

虚拟机启动完成后,点击左上角切换到“笔记本”标签,以访问 Jupyter Notebook 进行练习。

有时,你可能需要等待几秒钟让 Jupyter Notebook 完成加载。由于 Jupyter Notebook 的限制,操作验证无法自动化。

如果你在学习过程中遇到问题,随时向 Labby 提问。课程结束后提供反馈,我们将立即为你解决问题。

导入库

首先,我们需要为本实验导入必要的库。我们将使用 NumPy、Matplotlib 和 scikit-learn。

import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn import datasets

加载数据

接下来,我们将加载鸢尾花数据集,它是机器学习中一个很受欢迎的数据集。这个数据集包含了不同种类鸢尾花特征的信息。我们将使用这个数据集来演示 K 均值聚类算法。

iris = datasets.load_iris()
X = iris.data
y = iris.target

可视化数据

在应用 K 均值聚类算法之前,让我们先对数据进行可视化,以便更好地理解它。我们将使用三维散点图来可视化数据。

fig = plt.figure(figsize=(10, 8))
ax = fig.add_subplot(111, projection="3d")
ax.scatter(X[:, 0], X[:, 1], X[:, 2])
ax.set_xlabel("Sepal length")
ax.set_ylabel("Sepal width")
ax.set_zlabel("Petal length")
plt.show()

应用 K 均值聚类

现在,我们将对数据应用 K 均值聚类算法。我们将用 3 个簇初始化该算法,并将其应用于我们的数据。

kmeans = KMeans(n_clusters=3)
kmeans.fit(X)

可视化聚类结果

在应用 K 均值聚类算法之后,让我们来可视化形成的聚类。我们将使用三维散点图来可视化数据点及其各自所属的聚类。

fig = plt.figure(figsize=(10, 8))
ax = fig.add_subplot(111, projection="3d")
ax.scatter(X[:, 0], X[:, 1], X[:, 2], c=kmeans.labels_)
ax.set_xlabel("Sepal length")
ax.set_ylabel("Sepal width")
ax.set_zlabel("Petal length")
plt.show()

评估聚类

为了评估 K 均值聚类算法的性能,我们可以计算惯性得分。惯性得分衡量每个数据点与其分配的聚类中心之间的距离总和。较低的惯性得分表示聚类效果更好。

print("Inertia Score:", kmeans.inertia_)

总结

在本实验中,我们学习了 K 均值聚类算法及其在 Python 中使用 scikit-learn 库的实现。我们加载了鸢尾花数据集,对数据进行了可视化,应用了 K 均值聚类算法,并评估了其性能。聚类是一种强大的数据分析技术,可用于各种应用场景。