パターンとしての成分
CoddyのMachine Learningジャーニー「教師なし学習」セクションの一部。レッスン 30/51。
PCA は何を見たのでしょうか?各成分は64個の重み(ピクセルごとに1つ)で、components_には成分ごとに1行が格納されています。
pca = PCA(n_components=4).fit(X)
print(pca.components_.shape)これは (4, 64) を出力します。1 行を 8×8 に変形すると、画像になります。cmap="gray_r" は反転したグレースケールです。重みが大きい部分は暗く、負の部分は明るくなります。
ax.imshow(pca.components_[0].reshape(8, 8), cmap="gray_r")成分1は、4と6にインクがある部分が暗いため、それらはマップの右側に配置されます。スキャン画像のインクが暗いピクセルに重なると、スコアは高くなります。
チャレンジ
中級書道の先生は、人々が1つの数字を書くさまざまな方法を見たいと思っています。プログラムは数字を読み取り、スターターコードはそのスキャン画像を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
# 入力から読み取る1桁の数字の各スキャン: 1行あたり64ピクセル
d = int(input())
digits = load_digits()
X = digits.data[digits.target == d]
# 以下の行は変更しないでください
fig, axs = plt.subplots(1, 3)
# 以下にコードを書いてください
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
教師なし学習のすべてのレッスン
自分で練習してみよう: Pythonオンラインコンパイラ