In [1]:
# グラフが文章中に表示されるようにするおまじない
%matplotlib inline
In [2]:
def load_data():
from sklearn import datasets
dataset = datasets.load_digits()
return dataset
digits = load_data()
print(digits.data.shape)
1797
は行数、64
は次元数です。手書き文字の画像データが8×8のサイズであるため、その中のピクセル情報は64となります(今回値はグレースケールですが、RGBの場合3倍になります)。
In [6]:
def show_image(image):
import matplotlib.pyplot as plt
plt.figure(1, figsize=(3, 3))
plt.imshow(image, cmap=plt.cm.gray_r, interpolation='nearest')
plt.show()
show_image(digits.images[0])
In [13]:
def make_model():
from sklearn.linear_model import SGDClassifier
clf = SGDClassifier(alpha=0.0001, fit_intercept=True, n_iter=200)
return clf
classifier = make_model()
データとモデルがそろったため、学習させてみます。
In [23]:
classifier.fit(digits.data, digits.target)
Out[23]:
学習させたモデルの精度を計測してみます。predict
で予測させることができるので、これで予測させた値と実際の答え(digits.target
)を比べてみます。
In [24]:
def calculate_accuracy(model, dataset):
from sklearn import metrics
predicted = model.predict(dataset.data)
score = metrics.accuracy_score(dataset.target, predicted)
return score
print(calculate_accuracy(classifier, digits))
最後に、学習させたモデルを保存します。アプリケーション側で、その結果を確認してみてください。
In [16]:
from sklearn.externals import joblib
joblib.dump(classifier, "./machine.pkl")
Out[16]:
In [ ]: