使用 K 均值的无监督聚类

Machine LearningMachine LearningBeginner
立即练习

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

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

简介

在本实验中,我们将探索聚类,这是一种流行的无监督机器学习技术。聚类用于根据数据点的特征或属性将相似的数据点分组在一起,而无需标记的训练数据。有各种聚类算法可供选择,每种算法都有其自身的优缺点。在本实验中,我们将重点关注 k 均值聚类算法。

虚拟机使用提示

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

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

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL sklearn(("Sklearn")) -.-> sklearn/CoreModelsandAlgorithmsGroup(["Core Models and Algorithms"]) sklearn(("Sklearn")) -.-> sklearn/UtilitiesandDatasetsGroup(["Utilities and Datasets"]) ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) sklearn/CoreModelsandAlgorithmsGroup -.-> sklearn/cluster("Clustering") sklearn/UtilitiesandDatasetsGroup -.-> sklearn/datasets("Datasets") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/cluster -.-> lab-71116{{"使用 K 均值的无监督聚类"}} sklearn/datasets -.-> lab-71116{{"使用 K 均值的无监督聚类"}} ml/sklearn -.-> lab-71116{{"使用 K 均值的无监督聚类"}} end

导入所需的库

在开始之前,让我们导入本实验所需的库。

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

生成样本数据

接下来,让我们生成一些用于处理的样本数据。我们将使用 sklearn.datasets 模块中的 make_blobs 函数来创建一个带有聚类的合成数据集。

## 生成样本数据
X, y = make_blobs(n_samples=100, centers=4, random_state=0, cluster_std=1.0)

可视化数据

让我们使用散点图来可视化生成的数据。

## 绘制数据点
plt.scatter(X[:, 0], X[:, 1])
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.show()

执行 K 均值聚类

现在,让我们将 K 均值聚类算法应用于数据。

## 执行 K 均值聚类
kmeans = KMeans(n_clusters=4)
kmeans.fit(X)

可视化聚类

让我们可视化由 K 均值算法形成的聚类。

## 获取每个数据点的聚类标签
labels = kmeans.labels_

## 用颜色编码的聚类绘制数据点
plt.scatter(X[:, 0], X[:, 1], c=labels)
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.show()

评估聚类

为了评估聚类结果,我们可以计算聚类的惯性,它表示样本到其最近聚类中心的平方距离之和。

## 计算聚类的惯性
inertia = kmeans.inertia_
print("Inertia:", inertia)

总结

在本实验中,我们探索了 K 均值聚类算法。我们生成了一个合成数据集,对数据执行了 K 均值聚类,并可视化了得到的聚类。我们还计算了聚类的惯性,以此作为聚类性能的一种度量。聚类是一种用于在无标签数据中发现结构的强大技术,可应用于各种领域和类型的数据。