0から16の数字を使って手書き数字の形を表すプログラムを紹介します
sklearn(scikit-learn)のdigitsデータセットはdigits.dataの命令で、手書き数字画像を0~16の数字で取り出すことができます。そして、その0~16の数字を使って手書き数字の形を表すことができないか試してみたPythonプログラムを紹介します。
この投稿以外にdigitsデータセットについて扱っている投稿がこちら↓になります。
「sklearnの手書き数字画像を数字ごとにフォルダを分けて保存する方法」
手書き数字0を0~16の数字を使って数字の形を表すとこんな↓感じになります。

目次
・0~16の数字を使って手書き数字の形を表すプログラム
・正しくは
・白黒反転するプログラムとその様子
0~16の数字を使って手書き数字の形を表すプログラム
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
from sklearn.datasets import load_digits import matplotlib.pyplot as plt digits = load_digits() data=digits.data[0]#数字0を取り出す #0~16の数字で手書き数字の形を表すプログラム c=1 for i in data: print("{0:>3}".format(int(i)),end="")#formatで表示することでキレイに整列できます if c==8:#cが8になると、改行してcを初期化し、continueします print()#改行 c=1 continue c+=1 #画像で表示 data=data.reshape(8,8) plt.imshow(data,cmap="gray") plt.show() |
5行目は0~16の数字からなる手書き数字0を取り出しています。
8行目から15行目は取り出した数字データを8行8列になるように表示しています。
18行目から20行目は8行8列で表した手書き数字を画像で表示しています。
format関数についての投稿はこちら↓
「format関数 左揃え<右揃え>カンマ(,) Python」
上プログラムの実行結果とその他の手書き数字の様子がこちら↓
0の場合


1の場合


3の場合


上の実行結果を見てみると0に近い数字になると黒く、16に近い数字になると白くなっています。そして、0~16の数字を使って手書き数字の形を表した様子は、なんとなく0、1、3の数字に見えなくもないです。
正しくは
正しくは16を引いて白黒反転しないといけないのですが、0~16の数字で画像データを表す場合は0に近いほど色が黒く、16に近いほど白く表すようにした方が手書き数字の形が見やすいです。
一応、16を引いて白黒反転するプログラムとその様子を下に載せています。
白黒反転するプログラムとその様子
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
from sklearn.datasets import load_digits import matplotlib.pyplot as plt digits = load_digits() data=16-digits.data[0]#数字0を取り出す 16を引いて表示することで、白黒が反転します #0~16の数字で手書き数字の形を表すプログラム c=1 for i in data: print("{0:>3}".format(int(i)),end="")#formatで表示することでキレイに整列できます if c==8:#cが8になると、改行してcを初期化し、continueします print()#改行 c=1 continue c+=1 data=data.reshape(8,8)#8x8の2次元配列に変換 import numpyをしなくてもできます plt.imshow(data,cmap="gray") plt.show() |
16-digits.data[0]にすることで、手書き数字0を表す1つ1つの配列データに16を引いています。
0の場合


1の場合


3の場合

