数字数据集分析

Beginner

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

简介

在这个实验中,我们将探索 scikit-learn 数字数据集。该数据集由 1797 个 8x8 像素的图像组成,每个图像代表一个 0 到 9 的手写数字。我们的目标是分析这个数据集,并了解如何利用它使用机器学习算法对手写数字进行分类。

虚拟机使用提示

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

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

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

导入数据集

第一步是使用以下代码从 scikit-learn 导入数字数据集:

from sklearn import datasets

## 加载数字数据集
digits = datasets.load_digits()

可视化数据集

为了更好地理解数据集,我们可以使用 matplotlib 可视化一个样本图像。以下代码显示数据集中的最后一个数字:

import matplotlib.pyplot as plt

## 显示最后一个数字
plt.figure(1, figsize=(3, 3))
plt.imshow(digits.images[-1], cmap=plt.cm.gray_r, interpolation="nearest")
plt.show()

为机器学习准备数据集

在我们能够在数据集上训练机器学习模型之前,我们需要通过将其拆分为训练集和测试集来准备数据。我们可以使用 scikit-learn 的 train_test_split 函数来做到这一点:

from sklearn.model_selection import train_test_split

## 将数据集拆分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(digits.data, digits.target, test_size=0.2, random_state=42)

训练机器学习模型

既然我们已经准备好数据集,就可以在训练数据上训练机器学习模型了。在这个例子中,我们将使用支持向量机(SVM)算法:

from sklearn.svm import SVC

## 创建 SVM 分类器
clf = SVC(kernel='linear')

## 使用训练数据训练分类器
clf.fit(X_train, y_train)

评估模型

为了评估我们模型的性能,我们可以使用 scikit-learn 的 accuracy_score 函数:

from sklearn.metrics import accuracy_score

## 预测测试集的标签
y_pred = clf.predict(X_test)

## 计算模型的准确率
accuracy = accuracy_score(y_test, y_pred)

## 打印模型的准确率
print("Accuracy:", accuracy)

改进模型

如果我们模型的准确率不尽人意,我们可以尝试通过调整支持向量机(SVM)算法的超参数来改进它。例如,我们可以尝试更改 C 参数的值:

## 使用不同的 C 值创建 SVM 分类器
clf = SVC(kernel='linear', C=0.1)

## 使用训练数据训练分类器
clf.fit(X_train, y_train)

## 预测测试集的标签
y_pred = clf.predict(X_test)

## 计算模型的准确率
accuracy = accuracy_score(y_test, y_pred)

## 打印模型的准确率
print("Accuracy:", accuracy)

总结

在本实验中,我们探索了 scikit-learn 的手写数字数据集,并学习了如何训练一个机器学习模型来对手写数字进行分类。我们还学习了如何评估模型的性能,以及如何通过调整算法的超参数来改进它。对于任何对机器学习分类算法感兴趣的人来说,这个数据集都是一个很好的资源。