概要
この記事ではMNISTデータセットの概要とそのダウンロード方法についてまとめる。
MNISTとは
「Modified National Institute of Standards and Technology database」の略称。
0~9の手書き数字文字とそのラベル(正解データ)データセットで、よく機械学習のサンプルコードの学習対象とされる。
- 画像は学習データが60,000枚、テストデータが10,000枚で合計70,000枚
- 各ピクセルが0~255の値を持つグレースケールの画像
- 画像のサイズは縦横ともに28ピクセル
本家はこちら(http://yann.lecun.com/exdb/mnist/)
本家の情報では、各データセットのサイズは下記の通り。
- train-images-idx3-ubyte.gz: training set images (9912422 bytes)
- train-labels-idx1-ubyte.gz: training set labels (28881 bytes)
- t10k-images-idx3-ubyte.gz: test set images (1648877 bytes)
- t10k-labels-idx1-ubyte.gz: test set labels (4542 bytes)
ダウンロード方法
主要なライブラリではとても簡単に扱えるように整備されており、
ソースコード内でダウンロードする手段が用意されています。
Keras
1 | # https://keras.io/datasets/ |
PyTorch
1 | # https://pytorch.org/docs/stable/torchvision/datasets.html#mnist |
TensorFlow
1 | # https://www.tensorflow.org/datasets/overview |
scikit-learn
1 | # https://scikit-learn.org/stable/modules/generated/sklearn.datasets.fetch_openml.html |
データセットの中身の確認
上述のscikit-learnでのダウンロードを選択したと仮定して、データの中身を確認してみる。
Xとyの形状を確認
1 | X.shape |
画像はきちんと70,000枚ダウンロードできている。Xの形状をみると、2軸目が784
となっており28*28
の画像がflatに格納されていることがわかる。
Xの確認
1 | X |
なるほど。先頭と末尾は0ばかりのようだ。ここでは割愛するが、X[0]
などを確認してみると良いだろう。
yの確認
1 | y |
object
として各文字が保存されている。ラベルによって画像が
ソートされているわけではなさそうだ。
one-hot vectorに変換したい場合は以下のようにpreprocessing.LabelBinarizer
を使うと良いだろう。
1 | # https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.LabelBinarizer.html |
データの分布
collections
を使って、各ラベルの数え上げを行う。
1 | import collections |
偏りがあるようなので注意が必要だ。
まとめ
MNISTデータセットの概要とそのダウンロード方法についてまとめた。