<SYSTEM_TASK:>
Given the following text description, write Python code to implement the functionality described below step by step
<END_TASK>
<USER_TASK:>
Description:
 Number Recognizer
今回は、ブラウザ上に書いた手書きの数字を認識させます。具体的には、canvasに書かれた数字が0～9のどれであるかを当てさせます。
その予測を行うためのモデルを、以下のステップに沿って作成していきます。
データロード
モデル構築
学習
評価
保存
Step1:  Load the Data
scikit-learnには、最初から手書きの数字を認識するための学習データ(手書き数字の画像データと、その画像の数字が0～9の何れであるかという答えのセット)が搭載されているため、それを利用します。
Step2:  1797は行数、64は次元数です。手書き文字の画像データが8×8のサイズであるため、その中のピクセル情報は64となります。
Step3:  Create the Model
今回扱うのは画像の分類問題になります。そこで、分類問題で非常によく使われるSupport Vector Machineを利用します。
Step4:  Training the Model
データとモデルがそろったため、学習させてみます。
Step5:  Evaluate the Model
学習させたモデルの精度を計測してみます。predictで予測させることができるので、これで予測させた値と実際の答え(digits.target)を比べてみます。
Step6:  Store the Model
最後に、学習させたモデルを保存します。アプリケーション側で、その結果を確認してみてください。
<ASSISTANT_TASK:>
Python Code:
# グラフが文章中に表示されるようにするおまじない
%matplotlib inline
Explanation: Number Recognizer
今回は、ブラウザ上に書いた手書きの数字を認識させます。具体的には、canvasに書かれた数字が0～9のどれであるかを当てさせます。
その予測を行うためのモデルを、以下のステップに沿って作成していきます。
データロード
モデル構築
学習
評価
保存
End of explanation
from sklearn import datasets
digits = datasets.load_digits()
print(digits.data.shape)
Explanation: Load the Data
scikit-learnには、最初から手書きの数字を認識するための学習データ(手書き数字の画像データと、その画像の数字が0～9の何れであるかという答えのセット)が搭載されているため、それを利用します。
End of explanation
import matplotlib.pyplot as plt
plt.figure(1, figsize=(3, 3))
plt.imshow(digits.images[0], cmap=plt.cm.gray_r, interpolation='nearest')
plt.show()
Explanation: 1797は行数、64は次元数です。手書き文字の画像データが8×8のサイズであるため、その中のピクセル情報は64となります。
End of explanation
from sklearn import svm
create_model = lambda : svm.SVC(C=1, gamma=0.0001)
classifier = create_model()
Explanation: Create the Model
今回扱うのは画像の分類問題になります。そこで、分類問題で非常によく使われるSupport Vector Machineを利用します。
End of explanation
classifier.fit(digits.data, digits.target)
Explanation: Training the Model
データとモデルがそろったため、学習させてみます。
End of explanation
from sklearn import metrics
predicted = classifier.predict(digits.data)
score = metrics.accuracy_score(digits.target, predicted)
print(score)
Explanation: Evaluate the Model
学習させたモデルの精度を計測してみます。predictで予測させることができるので、これで予測させた値と実際の答え(digits.target)を比べてみます。
End of explanation
from sklearn.externals import joblib
joblib.dump(classifier, "./machine.pkl") 
Explanation: Store the Model
最後に、学習させたモデルを保存します。アプリケーション側で、その結果を確認してみてください。
End of explanation
<END_TASK>