PCAはパーツを学習しません
NMFと異なり、PCAは対象を構成する「パーツ」を学習しません。コンポーネントは(文書でいえば)トピックや、画像に対しても画像の一部分に対応しません。前の演習で扱ったLED数字画像のデータセットにPCAモデルを当てはめ、そのコンポーネントを可視化して自分の目で確かめてみましょう。画像は2次元配列 samples として利用できます。また、値が負の場合にピクセルを赤で表示するように改良された show_as_image() 関数も用意されています。
回答を送信すると、PCAのコンポーネントがLED数字の画像の意味のあるパーツを表していないことに気づくはずです!
この演習はコースの一部です
Pythonで学ぶ教師なし学習
演習の手順
sklearn.decompositionからPCAをインポートします。- 成分数を
7とするPCAインスタンスmodelを作成します。 modelの.fit_transform()メソッドをsamplesに適用し、結果をfeaturesに代入します。- モデルの各コンポーネント(
model.components_から取得)に対して、ループ内でそのコンポーネントを引数にshow_as_image()関数を適用します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Import PCA
____
# Create a PCA instance: model
model = ____
# Apply fit_transform to samples: features
features = ____
# Call show_as_image on each component
for component in ____:
____