谷歌网站优化推广,珠海网站建设 骏域网站,新开传奇新服,深圳市手机网站建设怎么样0、#xff1a;前言
这篇文章能够帮助你从数据到模型的整个过程实现不过至于安装第三方库等基础问题#xff0c;本文不涉及#xff0c;因为确实不难#xff0c;搜一搜一大把本此实验运行环境为jupyter#xff0c;当然通过pycharm也是可行的 1、数据#xff1a;
手写数字…0、前言
这篇文章能够帮助你从数据到模型的整个过程实现不过至于安装第三方库等基础问题本文不涉及因为确实不难搜一搜一大把本此实验运行环境为jupyter当然通过pycharm也是可行的 1、数据
手写数字共5000组数组其中一共有0-910组数据每一组中有500张对应的手写数字的图片数据资料 链接https://pan.baidu.com/s/1gTi-0xjDjbVUK_p_AzkZrw 提取码1234 2、数据预处理
拿到数据后把数据解压到和代码同一级的目录当中这部分重点是把图片数据转换为可以输入模型的二维数组型数据用到的函数解答 plt.imshow()函数是matplotlib库中的一个函数它用于显示图像。这个函数接受一个二维或三维的数组作为输入表示图像的数据。然后它将数组的值映射到颜色空间以显示图像。在plt.imshow()函数中cmap是一个参数代表色彩映射colormap。在图像处理中我们通常将图像表示为一个二维数组数组的每个元素代表图像的一个像素。每个像素的值通常是一个介于0和255之间的整数表示该像素的灰度级别。然而我们通常不能直接看到这些数字因为它们在视觉上可能没有明显的差别。相反我们通常将每个像素的值映射到一个连续的色彩空间这样我们就可以在屏幕上显示图像了。有许多不同的colormap可以选择比如‘gray’灰度colormap、‘hot’红色到白色的热图colormap、‘cool’蓝色到绿色的colormap、‘Jet’从蓝色到红色的colormap、‘hsv’HSV色彩空间的colormap。 代码
# 尝试从文件中读一个数据出来
img plt.imread(./手写数字识别/0/0_1.bmp)
display(img.shape) # img是一个二维数组
plt.imshow(img,cmapgray)3、实现
代码
# 批量导入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_splitx_train, x_test, y_train, y_test train_test_split(data,target,test_size0.2) # 20%的测试集# 导入模型
from sklearn.neighbors import KNeighborsClassifierknn KNeighborsClassifier()# 训练数据
knn.fit(x_train,y_train)# 查看模型得分如果是pycharm就把下面代码放到print中
knn.score(x_test,y_test)该模型最终结果为0.93对结果进行可视化
# 随机挑选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,i1)re.imshow(x_test[choice[i]].reshape(28,-1),cmapgray)re.set_title(freal:{y_test[choice[i]][0]},\npredict:{y_pred[choice[i]]},fontsize40,color k if y_test[choice[i]][0] y_pred[choice[i]] else r)4、补充
如果在划分了数据集之后要显示test当中的一个图片应该先把图片数据变回原来的维度然后再显示 关于如何改变数组维度的问题