sklearnには手書き数字のデータが用意されている。このデータはイメージの分類モデルを学ぶためによいスタートである。今回はこのバイナリデータを読み込み、イメージとして確認する。
- load_digitsによりデータを読み込み
- イメージの検証
load_digitsによりデータを読み込み
sklearn.datasets.load_digits — scikit-learn 0.21.3 documentation
# イメージデータの読み込みおよび確認 from sklearn.datasets import load_digits digits = load_digits() print(digits.data.shape) # (1797, 64)
さてこのデータはイメージデータ(バイナリ)である。ここには1797個のデータがある。一つのデータは8×8=64個の数値から成り立っている。
print(digits.data) # [[ 0. 0. 5. ... 0. 0. 0.] [ 0. 0. 0. ... 10. 0. 0.] [ 0. 0. 0. ... 16. 9. 0.] ... [ 0. 0. 1. ... 6. 0. 0.] [ 0. 0. 2. ... 12. 0. 0.] [ 0. 0. 10. ... 12. 1. 0.]]
これはイメージデータの配列である。pythonではイメージを表示してくれるpyplot.matshow()を使ってイメージを表示する。
import matplotlib.pyplot as plt %matplotlib inline plt.gray() plt.matshow(digits.images[0]) plt.show()
また戻り値は辞書型に類似しており、targetにイメージの値が入っている。
print(digits.target) # [0 1 2 ... 8 9 8]
イメージの俯瞰
イメージとtargetを組み合わせて、load_digitで読み込んだデータを最初の100個について俯瞰してみる。
fig, axes = plt.subplots(10, 10, figsize=(8, 8),subplot_kw={'xticks':[], 'yticks':[]}) for i, ax in enumerate(axes.flat): ax.imshow(digits.images[i], cmap='binary', interpolation='nearest') ax.text(0, 0, str(digits.target[i]))
まずsubplotsによりfigure(これはプロットするエリア全体), axes(座標軸であり、サブプロットはこのaxesに沿って設定する)を取得する。サブプロットの数は10×10=100である。全体のサイズはfigsize=(8,8)である。これは8inch x 8inchを意味する。サブプロットの形式としてxticksとyticksを消している。
次にaxes.flatをイテレータとする繰り返し処理をしている。
for i, ax in enumerate(axes.flat):
ax.imshowを使って、画像をサブプロットに設定する。またax.textにより各サブプロットの左上に数字を表示する。