赞
踩
# 尝试从文件中读一个数据出来
img = plt.imread('./手写数字识别/0/0_1.bmp')
display(img.shape) # img是一个二维数组
plt.imshow(img,cmap='gray')
# 批量导入5000个图片数据
data = [] # 分类模型输入数据
target = [] # 分类模型输出数据
for i in range(10):
for j in range(1,501):
img = plt.imread(f'./手写数字识别/{i}/{i}_{j}.bmp')
data.append(img)
target.append(i)
# 此时data和target作为列表数据运算起来非常耗内存,所以先转为数组形式的数据方便处理,然后再改变维度
data = np.array(data).reshape(5000, -1)
target = np.array(target).reshape(5000, -1)
print('data的形状:',data.shape,'target的形状:',target.shape)
# 数据划分为训练集和测试集
from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(data,target,test_size=0.2) # 20%的测试集
# 导入模型
from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier()
# 训练数据
knn.fit(x_train,y_train)
# 查看模型得分,如果是pycharm就把下面代码放到print中
knn.score(x_test,y_test)
# 随机挑选10个测试值画图查看预测结果
choice = np.random.randint(1,1000,10).tolist()
# 设置画布大小
plt.figure(figsize=(5*10,2*10))
for i in range(10):
# 画子图
re = plt.subplot(2,5,i+1)
re.imshow(x_test[choice[i]].reshape(28,-1),cmap='gray')
re.set_title(f'real:{y_test[choice[i]][0]},\npredict:{y_pred[choice[i]]}',fontsize=40,
color = 'k' if y_test[choice[i]][0] == y_pred[choice[i]] else 'r')
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。