Menu
CoddyTech

数字を見てみよう

CoddyのMachine Learningジャーニー「教師なし学習」セクションの一部。レッスン 43/51。

最後のプロジェクトは、手書きのスキャン画像1,797枚、そして先生はいません。5つのレッスンを通して、ラベルを1つも読むことなく、このようなグループを見つけていきます。

ぼやけた灰色の数字の画像が2列に5枚ずつ並んでいます。スキャン画像からk-meansが見つけた10個のグループの中心で、9、ぼやけた1または8、7、6、2、0、3、4、5、細い1です

すべてのプロジェクトは、観察することから始まります。ピクセルのばらつき、つまり多くのスキャンにわたる標準偏差は、書き手の間で意見が分かれる場所を示します。ここでは、すべての7について見てみましょう。

7のピクセルのばらつきを示す8×8のグリッド。ばらつきが大きいほど青色が濃く、上部の横棒と下に伸びる線に沿って高く、左端と右下では0.0

spread = X[y == 7].std(axis=0)
print((spread == 0).sum())

これは15を出力します。7つごとに15ピクセルが空白になります。変化しないピクセルはモデルに何も伝えません。

challenge icon

チャレンジ

中級

探索を始めましょう。スターターコードはスキャン画像をXに、数字をyに読み込み、グラフを準備します。

  1. すべてのスキャン画像における各ピクセルのばらつきを求めます。最もばらつきの大きいピクセルの行、列、ばらつき(小数点以下2桁)を出力し、すべてのスキャン画像で空白のままのピクセル数も出力します。
  2. ax上に8×8の画像として描画し、cmap="Blues"を使って、カラーバーを付けます。表示しましょう。

1だけの場合:

Busiest pixel: row 6, column 5 (spread 6.53)
Blank in every scan: 12 pixels

「Where Writers Disagree」というタイトルとカラーバーが付いた8×8の画像。1のスキャン画像における各ピクセルのばらつきを示し、行と列には0から7の番号が付いている。中央には濃い帯が2本あり、書き手によって線を置く場所が異なることを示している。左右の端は薄い。

あなたのグラフは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")

# 以下にコードを書いてください
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

教師なし学習のすべてのレッスン

自分で練習してみよう: Pythonオンラインコンパイラ