将主成分视为模式
本课属于 Coddy Machine Learning 学习旅程的“无监督学习”单元。第 30 课,共 51 课。
PCA 分析了什么?每个主成分包含 64 个权重,每个像素对应一个权重,而 components_ 中每一行对应一个主成分:
pca = PCA(n_components=4).fit(X)
print(pca.components_.shape)这会输出 (4, 64)。将一行重塑为 8 × 8 后,它就变成了一张图片。cmap="gray_r" 表示反转灰度:较大的权重显示为深色,负权重显示为浅色:
ax.imshow(pca.components_[0].reshape(8, 8), cmap="gray_r")组件 1 在 4s 和 6s 有墨迹的地方颜色较深,所以它们会落在图的右侧。当扫描中的墨迹落在深色像素上时,得分会更高。
挑战
中等一位书法老师想看看人们书写同一个数字的不同方式。程序会读取这个数字,起始代码会将它的扫描图像保存在 X 中。
- 用
X拟合包含 3 个成分的 PCA。 - 将成分
i绘制在axs[i]上,作为一张 8 × 8 的图片,使用cmap="gray_r",标题从Component 1到Component 3。 - 显示图表。
对于数字 2,程序会绘制出下面的图。接着,Coddy 会描述你的各个面板:
亲手试试
import matplotlib.pyplot as plt
from sklearn.datasets import load_digits
from sklearn.decomposition import PCA
# 从输入中读取一个数字的每张扫描图像:每行 64 个像素
d = int(input())
digits = load_digits()
X = digits.data[digits.target == d]
# 不要修改下面这行代码
fig, axs = plt.subplots(1, 3)
# 在下面编写你的代码
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
无监督学习中的所有课
自己练习: Python 在线编译器