Python 機械学習による手書き文字認識

データの表示

読み込み

from sklearn import datasets

digits = datasets.load_digits()

# 画像数
len(digits.images)
# 画像配列
digits.images[0]

画像表示

import matplotlib.pyplot as plt

plt.imshow(digits.images[0])
plt.show()

最初の15個表示

for i in range(15):
    plt.subplot(3,5,i+1)
    plt.axis("off")
    plt.title(str(digits.target[i]))
    plt.imshow(digits.images[i],cmap="gray")

学習

digits = datasets.load_digits()
x = digits.images
y = digits.target
x = x.reshape((-1, 64)) # 二次元配列を一次元配列に変換

# 学習用とテスト用に分割
from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2)

# 学習
from sklearn.svm import SVC
model = SVC(C=100.,gamma=0.001)
model.fit(x_train, y_train)

テスト

# 画像
plt.imshow(x_test[0].reshape(8,8))
plt.show()
# 予測
model.predict([x_test[0]])
# 正解
y_test[0]
# 正解率
model.score(x_test,y_test)