【scikit-learn】sklearn.datasets.load_digits() 函数:手写数字多分类数据集

sklearn.datasets.load_digits()

load_digits()sklearn.datasets 提供的 手写数字数据集,用于 多分类任务,适用于 机器学习模型测试计算机视觉入门


1. load_digits() 数据集简介

属性说明
样本数1797
特征数64(8×8 灰度像素)
类别数10(数字 0-9
任务类型多分类问题
数据类型每个样本是 8×8 图片,像素值 0-16

2. load_digits() 代码示例

(1) 加载数据集

from sklearn.datasets import load_digits

# 加载数据
digits = load_digits()

# 获取特征矩阵和目标变量
X, y = digits.data, digits.target

print("特征矩阵形状:", X.shape)
print("目标变量形状:", y.shape)
print("类别名称:", digits.target_names)

输出

特征矩阵形状: (1797, 64)
目标变量形状: (1797,)
类别名称: [0 1 2 3 4 5 6 7 8 9]

解释

  • X.shape = (1797, 64)17978×8 图片,每张图片有 64 个像素点。
  • y.shape = (1797,)1797 个标签,对应 0-9 这 10 个数字。

(2) 数据集格式

print(type(digits))

输出

<class 'sklearn.utils._bunch.Bunch'>

解释

  • load_digits() 返回的是 Bunch 对象,类似于字典,可通过 .data.target.images 访问数据

(3) 可视化手写数字

import matplotlib.pyplot as plt

# 显示前 10 个数字
fig, axes = plt.subplots(2, 5, figsize=(10, 5))
for i, ax in enumerate(axes.flat):
    ax.imshow(digits.images[i], cmap="gray")
    ax.set_title(f"Label: {digits.target[i]}")
    ax.axis("off")

plt.show()

解释

  • digits.images[i] 提供 8×8 图片数据
  • 使用 imshow() 可视化手写数字

3. load_digits() 数据分析

(1) 样本数据

import pandas as pd

# 转换为 DataFrame
df = pd.DataFrame(digits.data)
df["target"] = digits.target

print(df.head())

输出

   0   1   2   3   4   5   6   7  ...  56  57  58  59  60  61  62  63  target
0  0   0   5  13   9   1   0   0  ...   0   0   0   0   0   0   0   0       0
1  0   0   0   12  13   5   0   0  ...   0   0   0   0   0   0   0   0       1
2  0   0   0   4  15  12   0   0  ...   0   0   0   0   0   0   0   0       2
3  0   0   7  15   1   0   0   0  ...   0   0   0   0   0   0   0   0       3
4  0   0   0   1  11   0   0   0  ...   0   0   0   0   0   0   0   0       4

解释

  • 64 个像素值作为特征,每个样本是一个 8×8 灰度图片
  • target 是手写数字的真实标签(0-9)

(2) 类别分布

import seaborn as sns

sns.countplot(x=df["target"])
plt.title("Digits 数据集类别分布")
plt.show()

解释

  • 查看每个数字的数量,验证数据集是否均衡

4. 适用场景

  • 手写数字识别任务(计算机视觉)。
  • 分类问题(多分类任务)
  • 机器学习算法测试(如 KNNSVM随机森林

5. load_digits() vs. 其他数据集

数据集任务类型样本数特征数适用场景
load_iris()多分类1504经典分类问题
load_wine()多分类17813葡萄酒分类
load_digits()多分类179764手写数字识别
fetch_openml("mnist_784")多分类70000784MNIST 手写数字识别

6. 结论

  • load_digits() 提供了 1797 张 8×8 手写数字图片,用于多分类任务,适用于 机器学习和计算机视觉入门
  • 可以 转换为 Pandas DataFrame 进行数据分析,也可以 使用可视化方法查看手写数字
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

彬彬侠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值