Menu
CoddyTech

数字一览

本课属于 Coddy Machine Learning 学习旅程的“数据与图表”单元。第 59 课,共 60 课。

load_digits 包含 1,797 个手写数字。每个样本由 64 个像素亮度值组成,按行排列,构成一张 8 × 8 的图片,亮度范围从 0(空白)到 16(墨迹最浓)。

没有两位书写者写出的 4 完全一样:

两行各有五个手写的 4,来自 load_digits,白色笔迹,黑色背景,每个 4 的倾斜角度和形状都略有不同

老师想要的是典型的那种:平均图像,其中每个像素的值都是该数字所有样本中对应像素的平均值。

challenge icon

挑战

困难

程序会读取一个数字 d。加载数字数据时不要使用 as_frame,这样 .data 和 .target 就是 NumPy 数组。

  1. 计算数字 d 的平均图像。
  2. 打印最亮像素所在的行和列,从 0 开始计数。
  3. 打印平均墨迹值:将 64 个像素的均值再求平均,并使用 np.round 四舍五入到 2 位小数。
  4. 将它绘制成一张 8 × 8 的 gray 图像,标题为 Average 和这个数字。

以 4 为例,结果应如下所示:

一张标题为 Average 4 的 8 × 8 灰度图:黑色背景上有一个柔和、模糊的白色 4,书写者最常交叉笔画的位置最亮

输入 4 时,完整输出如下:

Brightest pixel: row 5, column 4
Average ink: 4.85
Charts drawn: 1
Title: Average 4
Images: 1
Size: 8 rows, 8 columns
Color map: gray
Row 0: [0.0, 0.0, 0.5, 7.1, 11.5, 2.0, 0.2, 0.1]
Row 1: [0.0, 0.1, 3.5, 13.3, 8.5, 2.0, 1.1, 0.3]
Row 2: [0.0, 0.7, 10.5, 11.4, 4.9, 5.8, 3.8, 0.3]
Row 3: [0.0, 4.6, 14.5, 6.4, 7.4, 10.6, 6.1, 0.0]
Row 4: [0.0, 8.6, 14.6, 9.7, 13.0, 14.0, 5.3, 0.0]
Row 5: [0.1, 6.3, 11.3, 12.4, 14.6, 10.4, 1.6, 0.0]
Row 6: [0.1, 1.1, 2.9, 7.8, 13.5, 4.2, 0.0, 0.0]
Row 7: [0.0, 0.0, 0.6, 7.8, 11.8, 2.0, 0.0, 0.0]

亲手试试

import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_digits

d = int(input())

# 在下方编写你的代码
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

数据与图表中的所有课

自己练习: Python 在线编译器