科学の箱

科学・IT・登山の話題

機械学習

手書き数字のデータセットについてイメージを確認

投稿日:

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により各サブプロットの左上に数字を表示する。

 

 

メタ情報

inarticle



メタ情報

inarticle



-機械学習
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

Pythonではじめる機械学習 – KDE

カーネル密度分布とは カーネル密度分布とは一言でいうと滑らかなヒストグラムであり曲線になっている。標本データから確率密度を計算することにより標本がない部分についても確率密度を計算できる。 例えば犯罪の …

no image

make_blobsで分類データを作成する

sklearnで分類学習モデルを構築する際にテストデータが必要になる。手で作成したりあらかじめ用意されたデータを使うこともできるが、make_blobsを使ってランダムデータを作成できる。 sklea …

no image

仕事で始める機械学習 – 2.機械学習で何ができるか – 分類 – SVM

SVMの決定境界 SVMの決定境界はSVMで利用するカーネルにより異なる。 線形カーネル→線形 RBFカーネル→非線形 損失関数 損失関数としてはヒンジ関数を利用するが、パーセプトロンとは異なり、横軸 …

no image

独立性の検定 2つ

ニートの年齢別割合が1996年と2012年で関連性があるか独立性の検定をしてみる。 ニートの割合  1996 2012 15~19歳 9 9 20~24歳 12 17 25~29歳 10 18 30~ …

no image

スパムメールの判別に使うベイズ定理についてまとめる

分類問題 スパムメールを判別するような問題は一般的に「分類問題」として機械学習では取り扱う。分類問題とはいまある「物」や「発生した事柄」を確率的に分類する。この「確率的」という言葉がみそであり、固定さ …

2019年10月
« 9月   11月 »
 123456
78910111213
14151617181920
21222324252627
28293031  

side bar top



アーカイブ

カテゴリー