MNISTデータセットの説明



機械学習

分類(classification)

ニューラルネットワーク(NN)

クラスタリング

強化学習

敵対的生成ネットワーク

公開日:2021/6/2         

前提知識
ニューラルネットワークとは
pythonとは


■MNISTとは
MNISTとはニューラルネットワークの研究者Yann LeCun氏の有名なサイトのことで、ここに機械学習用のデータ用として1から9までの手書きの数字をデータ化したものがあります。 トレーニングデータとして60,000個のデータ、テストデータとして10,000個のデータがあります。

http://yann.lecun.com/exdb/mnist/

■データセットの説明
1つの画像データは以下の様に、縦28ピクセルx横28ピクセルの計784ピクセル分のデータとして0~255の値で表現されております。

  

ただし、上記サイトにあるデータの形式は少し扱いが難しいので、こちらでcsv/テキストファイルを準備しました。使用するのはどちらでもよいです。

・csvファイル:トレーニングデータ , テストデータ
・テキストファイル:トレーニング/テストデータ

csvファイルは以下形式になっており、1行に1つの画像データがあります。テキストデータは数字が羅列されており、改行されたところまでが一つの画像データとなっております。



なおデータの内訳は以下のとおり。


■pythonでの実装例

①csvデータの場合
上記画像が出力されます。

import numpy as np
import matplotlib.pyplot as plt

training_file = open("mnist_train_data.csv", 'r') # 訓練データを開く
training_list = training_file.readlines()              # データを読み込む
training_file.close()                         # ファイルを閉じる
data= training_list[0].split(',')          # 0行目を取り出し、splitでデータをカンマ(,)区切る
img= np.asfarray(data[1:]).reshape((28,28))   # 0行目の2つ目のデータから取り出し、28x28に配置

plt.imshow(img, cmap='Greys')     # 画像をグレースケールで表示出来るようにする
plt.show()                                   # 画像を表示


②テキストデータの場合

import numpy as np
import matplotlib.pyplot as plt

train = np.loadtxt('mnist_train.txt') # 訓練データを読み込む
img = train.reshape(60000, 28, 28) # データ整形

plt.imshow(img[0], cmap='Greys')   # 画像をグレースケールで表示出来るようにする
plt.show()                                    # 画像を表示


③kerasを使う場合
kerasというライブラリには、MNISTのデータセットがありますので、それを使ってもよいです。(要kerasインストール)

from keras.datasets import mnist
import matplotlib.pyplot as plt

(train_img, train_ans), (test_img, test_ans) = mnist.load_data()  # 訓練データを読み込む

plt.imshow(train_img[0], cmap='Greys')   # 画像をグレースケールで表示出来るようにする
plt.show()                                    # 画像を表示










サブチャンネルあります。⇒ 何かのお役に立てればと

関連記事一覧



機械学習

分類(classification)

ニューラルネットワーク(NN)

クラスタリング

強化学習

敵対的生成ネットワーク