始める無料で始める

NMFは画像をパーツに分解する

ここまで学んだNMFの知識を使って、digitsデータセットを分解してみましょう。今回も、数字の画像は2次元配列samplesとして与えられています。さらに今回は、1次元配列でエンコードされた画像を表示できる関数show_as_image()も用意されています。

def show_as_image(sample):
    bitmap = sample.reshape((13, 8))
    plt.figure()
    plt.imshow(bitmap, cmap='gray', interpolation='nearest')
    plt.colorbar()
    plt.show()

作業が終わったら、プロットをじっくり見て、NMFが数字をどのように成分の和として表現しているかを確認してみましょう。

この演習はコースの一部です

Pythonで学ぶ教師なし学習

コースを見る

演習の手順

  • sklearn.decompositionからNMFをインポートしてください。
  • 成分数7を指定して、modelという名前のNMFインスタンスを作成してください(7はLEDディスプレイのセル数です)。
  • model.fit_transform()メソッドをsamplesに適用し、結果を featuresに代入してください。
  • モデルの各成分(model.components_からアクセス)に対して、ループの中で show_as_image()関数を適用してください。
  • featuresの行0digit_featuresに代入してください。
  • digit_featuresを出力してください。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

# Import NMF
____

# Create an NMF model: model
model = ____

# Apply fit_transform to samples: features
features = ____

# Call show_as_image on each component
for component in model.components_:
    ____

# Select the 0th row of features: digit_features
digit_features = ____

# Print digit_features
print(digit_features)
コードを編集して実行