使用 Python 探索 K 均值聚类

Machine LearningMachine LearningBeginner
立即练习

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

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

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

虚拟机使用提示

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

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

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL sklearn(("Sklearn")) -.-> sklearn/CoreModelsandAlgorithmsGroup(["Core Models and Algorithms"]) ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) sklearn/CoreModelsandAlgorithmsGroup -.-> sklearn/cluster("Clustering") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/cluster -.-> lab-49082{{"使用 Python 探索 K 均值聚类"}} ml/sklearn -.-> lab-49082{{"使用 Python 探索 K 均值聚类"}} end

导入库

首先,我们需要为本实验导入必要的库。我们将使用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均值聚类算法,并评估了其性能。聚类是一种强大的数据分析技术,可用于各种应用场景。