算法图片识别——使用保存的模型识别数字[joblib.load/np.load/ndimage.zoom]

导包

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')

算法图片识别——使用保存的模型识别数字[joblib.load/np.load/ndimage.zoom]_第1张图片

截取单个数字

plt.imshow(digits[85:145,135:195],cmap = 'gray')

算法图片识别——使用保存的模型识别数字[joblib.load/np.load/ndimage.zoom]_第2张图片

 

压缩图片至模型训练图片大小一致:ndimage.zoom

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])

 

你可能感兴趣的:(算法实例)