导包
from sklearn.externals import joblib
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
导入模型
knn = joblib.load('./digits.m')
knn
Out:
KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',
metric_params=None, n_jobs=1, n_neighbors=5, p=2,
weights='uniform')
使用numpy导入特征数据和目标数据
X = np.load('./digits.npy')
y = np.load('./digits_target.npy')
测试数据进行评分
knn.score(X[-50:],y[-50:])
Out:0.96
导入手写数字
digits = plt.imread('./数字.jpg')
plt.imshow(digits,cmap = 'gray')
截取单个数字
plt.imshow(digits[85:145,135:195],cmap = 'gray')
压缩图片至模型训练图片大小一致:ndimage.zoom
扫描二维码关注公众号,回复:
3221334 查看本文章
X_test = digits[85:145,135:195]
from scipy import ndimage
# ndimage.zoom:压缩图片,原图60*60,模型训练的图片形状是28*28,
# 需要压缩至28*28
# 因为要识别的数字是三维彩色图片,最后一维不压缩:1
X_test = ndimage.zoom(X_test,zoom = [28/60,28/60,1])
plt.figure(figsize=(1,1))
plt.imshow(X_test,cmap = 'gray')
彩色图片灰度处理
# 彩色图片的灰度处理:取最后一维的最小值
X_test = X_test.min(axis = -1)
调整识别数字的数组格式
# (1,-1),1:1个预测样本,-1:n个特征
X_test = X_test.reshape(1,-1)
识别预测
knn.predict(X_test)
Out: array([6])