观察数字
本课属于 Coddy Machine Learning 学习旅程的“无监督学习”单元。第 43 课,共 51 课。
你的上一个项目:1,797 张手写扫描图,而且没有老师。在接下来的 5 节课中,你将找到这样的分组,而且不用读取任何标签:
每个项目都从观察开始。像素的离散程度,也就是它在多次扫描中的标准差,能显示书写者在哪些地方意见不一。这里展示的是所有数字 7 的情况:
spread = X[y == 7].std(axis=0)
print((spread == 0).sum())这会输出 15:每 7 个像素中有 15 个是空白的。一个始终不变的像素无法向模型提供任何信息。
挑战
中等开始探索。起始代码会将扫描图像加载到 X,将数字加载到 y,并设置好图表。
- 计算所有扫描图像中每个像素的离散程度。打印最繁忙像素的行、列和离散程度(保留 2 位小数),然后打印在每张扫描图像中都保持空白的像素数量。
- 在
ax上用cmap="Blues"将它们绘制成一张 8 × 8 的图像,并添加颜色条。显示图像。
只看数字 1:
Busiest pixel: row 6, column 5 (spread 6.53)
Blank in every scan: 12 pixels你的图像涵盖了全部 1,797 张扫描图像。Coddy 会描述你的图像。书写者在哪些地方的差异最大?
亲手试试
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_digits
# 1,797 张手写数字扫描图:每张有 64 个像素(8 × 8,墨迹深浅从 0 到 16),并标有写下的数字
digits = load_digits()
X = digits.data
y = digits.target
fig, ax = plt.subplots()
ax.set_title("Where Writers Disagree")
# 在下方编写你的代码
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
无监督学习中的所有课
自己练习: Python 在线编译器