sklearnの手書き数字画像を数字ごとにフォルダを分けて保存する方法

Pythonのsklearn(scikit-learn)digitsデータセット(手書き数字のデータ)から手書き数字の画像を取り出すときに数字0なら0のフォルダに、1なら1のフォルダのように数字ごとに分けて保存するPythonプログラムを紹介します。

この投稿以外にdigitsデータセットについて扱っている投稿がこちら↓になります。
0から16の数字を使って手書き数字の形を表すプログラムを紹介します

目次

・scikit-learnのload_digitsとは

・データの取り出し方

・import osを使ったフォルダの作成


・0~9の各フォルダに手書き数字データを保存するプログラム


・実行経過の様子


・matplotlibで手書き数字画像を表示

scikit-learnのload_digitsとは

load_digitsはscikit-learnをインストールすると付属している手書き数字データの集りのことです。

手書き数字データは0~9までの数字があり、8×8ピクセルの大きさで合計1797枚の画像データが入っています。

データの取り出し方

digits = load_digits()
※手書き数字の画像データを変数digitsに代入

digits.data
手書き数字を0~16の数字データとして取り出すときに使います。

digits.target
手書き数字がどの数字で書かれているのかを表すときに使います。

digits.images
実際に手書き数字画像を画面に表示するときに使います。

import osを使ったフォルダの作成

import osのos.mkdirで手書き数字データを数字ごとに保存するためのフォルダを作成しています。

0~9の各フォルダに手書き数字データを保存

プログラムの説明をします。

15行目のif 文iの値0~9と手書き数字がどの数字で書かれているのかを表すdigits.target[j]の値を順番で確認していき同じになれば、18行目のplt.imsaveで指定したフォルダに、グレイ画像にしてから保存していきます。これで、数字ごとにフォルダを分けて保存しています。

18行目の保存するときの拡張子.jpg.pngにするとpngの形で保存できます。

保存できたか確認」を表示した様子

実行経過の様子

1.import osでtegakiフォルダとその中に0~9のフォルダを作成した様子

2.tegakiフォルダクリックした中の様子

3.plt.imsaveで0~9のフォルダに各手書き数字画像を保存した様子

4.0フォルダの中の様子

8×8ピクセルで保存したので、小さくて見えにくいです。

matplotlibで手書き数字を表示

上のプログラムで作成したtegakiフォルダにある0フォルダから、手書き数字05行4列の形で20枚表示しています。

表示してみると、手書き数字0の形が1つ1つ違うのがわかります。