*SJE2015 ex10 [#o38e5fce]

**課題A [#t6bddda4]

手書き数字を最近傍法で識別してみよう.
MNISTのデータを最近傍法で識別してみよう.

前回の識別法では,クラス毎に1つの見本(プロトタイプ)を用意して,テストデータを,最も近いプロトタイプのクラスに分類していた.これを一般化すれば,1つのクラスに複数のプロトタイプを用意して,それらの中からテストデータと最も近いプロトタイプを探して,そのテストデータはそのプロトタイプと同じクラスに分類する,という方法が考えられる.これを最近傍(Nearest Neighbor)法という.

mnist.py を利用して,最近傍法で10クラス手書き数字識別のプログラムを書こう.
前回の最短距離法は,このNN法で1クラス1プロトタイプとし,かつプロトタイプを学習データの平均とした,という特別な場合に相当する.プロトタイプは,あらかじめ集めておいたクラスラベル既知のデータに何らかの処理を施して作成してもよいが,最も単純でよく使われるのは,「学習データ全部そのまんま使ってまえ」という方法である.

というわけで,MNISTのデータをこのようなNN法で識別するプログラムを作って実験しなさい.プログラムと,テストデータの誤識別率が何%になったかを報告すること(学習データの誤識別率は...調べる必要ないことは明らかですよね).

ただし,上記の説明から想像つくようにNN法は記憶コストも計算コストも大きい.最初のうちは 学習データの最初の1000件だけを用いてテストデータを識別させるようにしてデバグ&動作確認し,それから全部使って実行,という方針でやることをおすすめします.

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS