手写数字图片识别+导入csv训练集+预测训练集+csv导出预测结果

题目来源:
Dataset之MNIST:MNIST(手写数字图片识别+csv文件)数据集简介、下载、使用方法之详细攻略

  • 导入csv训练集、测试集数据
  • 构建神经网络
  • 预测训练集
  • csv导出预测结果

1. 导入csv训练集、测试集数据
“csv数据导入前,人为地删除表格第一行的图像像素序号”

#读取train.csv里的数据,数据与标签分开记录
filename = 'train.csv'f = open(filename,'r')
train_images = []
train_lables = []
for i in f.readlines():a = i.strip().split(',')train_images.append([int(j) for j in a[1:]])train_lables.append(int(a[0]))#读取test.csv里的数据
filename = 'test.csv'f = open(filename,'r')
test_images = []
for i in f.readlines():a = i.strip().split(',')test_images.append([int(j) for j in a[0:]])#对图片的数据进行分行处理
import numpy
test_images=numpy.array(test_images)
train_images=numpy.array(train_images)
  • 测试数据是否导入,通过print的方式
#对图像数据的某些输出进行测试
print('训练数据维度',train_images.shape)
print('测试图片个数',len(test_images))
print('训练集第4个数字图像的识别结果',train_lables[4])#显示训练集第4个数字图像
import numpy as np
import matplotlib.pyplot as plt
plt.imshow(train_images[4].reshape(28, 28))
plt.show()

2. 构建神经网络
“参考网络的代码”

#构建网络
#神经网络的核心组件是层(layer),它是一种数据处理模块,可看成数据过滤器。
#此网络包含2个Dense层,
from keras.models import Sequential# 导入Sequential模型
from keras.layers import Dense
from keras.optimizers import Adam
# design model
network = Sequential()
network.add(Dense(512, activation='relu', input_shape=(28 * 28,)))
network.add(Dense(10, activation='softmax'))
adam = Adam(lr=0.001)# compile model
network.compile(optimizer='rmsprop',loss='categorical_crossentropy',metrics=['accuracy'])#在开始训练之前,对数据进行预处理,将其变换为网络要求的形状,并缩放到所有值都在[0, 1] 区间。
#需要将其变换为一个float32 数组(浮点型),其形状为(42000, 28 * 28),取值范围为0~1。
train_images = train_images.reshape((42000, 28 * 28))
train_images = train_images.astype('float32') / 255
test_images = test_images.reshape((28000,28*28))
test_images = test_images.astype('float32') / 255#对标签进行分类编码
from keras.utils import to_categorical
train_lables = to_categorical(train_lables)# training model,通过调用网络的fit 方法在训练数据上拟合(fit)模型。
#训练过程中显示了两个数字:一个是网络在训练数据上的损失(loss),另一个是网络在训练数据上的精度(acc)。
network.fit(train_images, train_lables, epochs=5, batch_size=128)

3. 预测训练集
这是自己写的代码,当时网上根本搜不到直接输出的代码。(我发现有人直接挪用发知识分享,注释都完全一样,望周知)

#预测测试集图像对应的数字
predict=[]
predict_test = network.predict(test_images)
predict = np.argmax(predict_test,1)  #axis = 1是取行的最大值的索引,0是列的最大值的索引#打印预测数据,检测其是否预测准确
print(predict)

4. csv导出预测结果
这是自己写的代码,当时网上根本搜不到直接输出的代码。(我发现有人直接挪用发知识分享,注释都完全一样,望周知)

#将预测数据用csv格式输出
import pandas as pda = []
b = []
for i in range(28000):a.append(i+1)b.append(predict[i])#字典中的key值即为csv中列名
dataframe = pd.DataFrame({'ImageId':a,'Label':b})#将DataFrame存储为csv,index表示是否显示行名,default=True
dataframe.to_csv("results.csv",index=False,sep=',')
  • 展示测试集的图片
#展示测试集的图片
plt.imshow(test_images[2].reshape(28, 28))
plt.show()
  • 测试结果:

因为老师发布了任务,利用网络资源完成后,单纯是为了保存下劳动的成果,所以把程序发到这里和大家共享。
ps:感谢我的两位兄dei

手写数字图片识别+导入csv训练集+预测训练集+csv导出预测结果相关推荐

  1. TF之NN:利用DNN算法(SGD+softmax+cross_entropy)对mnist手写数字图片识别训练集(TF自带函数下载)实现87.4%识别

    TF之NN:利用DNN算法(SGD+softmax+cross_entropy)对mnist手写数字图片识别训练集(TF自带函数下载)实现87.4%识别 目录 输出结果 代码设计 输出结果 代码设计 ...

  2. DL之DNN:利用DNN算法对mnist手写数字图片识别数据集(sklearn自带,1797*64)训练、预测(95%)

    DL之DNN:利用DNN算法对mnist手写数字图片识别数据集(sklearn自带,1797*64)训练.预测(95%) 目录 数据集展示 输出结果 设计代码 数据集展示 先查看sklearn自带di ...

  3. DL之NN/CNN:NN算法进阶优化(本地数据集50000张训练集图片),六种不同优化算法实现手写数字图片识别逐步提高99.6%准确率

    DL之NN/CNN:NN算法进阶优化(本地数据集50000张训练集图片),六种不同优化算法实现手写数字图片识别逐步提高99.6%准确率 目录 设计思路 设计代码 设计思路 设计代码 import mn ...

  4. DL之NN:NN算法(本地数据集50000张训练集图片)进阶优化之三种参数改进,进一步提高手写数字图片识别的准确率

    DL之NN:NN算法(本地数据集50000张训练集图片)进阶优化之三种参数改进,进一步提高手写数字图片识别的准确率 导读 上一篇文章,比较了三种算法实现对手写数字识别,其中,SVM和神经网络算法表现非 ...

  5. DL之NN/Average_Darkness/SVM:手写数字图片识别(本地数据集50000训练集+数据集加4倍)比较3种算法Average_Darkness、SVM、NN各自的准确率

    DL之NN/Average_Darkness/SVM:手写数字图片识别(本地数据集50000训练集+数据集加4倍)比较3种算法Average_Darkness.SVM.NN各自的准确率 目录 数据集下 ...

  6. Dataset之Handwritten Digits:Handwritten Digits(手写数字图片识别)数据集简介、安装、使用方法之详细攻略

    Dataset之Handwritten Digits:Handwritten Digits(手写数字图片识别)数据集简介.安装.使用方法之详细攻略 目录 Handwritten Digits数据集的简 ...

  7. TF:基于CNN(2+1)实现MNIST手写数字图片识别准确率提高到99%

    TF:基于CNN(2+1)实现MNIST手写数字图片识别准确率提高到99% 导读 与Softmax回归模型相比,使用两层卷积的神经网络模型借助了卷积的威力,准确率高非常大的提升. 目录 输出结果 代码 ...

  8. Dataset之MNIST:MNIST(手写数字图片识别+ubyte.gz文件)数据集的下载(基于python语言根据爬虫技术自动下载MNIST数据集)

    Dataset之MNIST:MNIST(手写数字图片识别+ubyte.gz文件)数据集的下载(基于python语言根据爬虫技术自动下载MNIST数据集) 目录 数据集下载的所有代码 1.主文件 mni ...

  9. TF之LoR:基于tensorflow利用逻辑回归算LoR法实现手写数字图片识别提高准确率

    TF之LoR:基于tensorflow利用逻辑回归算LoR法实现手写数字图片识别提高准确率 目录 输出结果 设计代码 输出结果 设计代码 #TF之LoR:基于tensorflow实现手写数字图片识别准 ...

最新文章

  1. 最常用的Linux命令
  2. VC++中使用MFC通过ADO连接数据库
  3. 第五章Bookstrap
  4. 数据库面试题【十一、InnoDB引擎的4大特性】
  5. pfsense下的流量管理(转)
  6. 微软翻译api的使用介绍和注意事项
  7. Calendar、Date、long类型的时间,三者之间如何转化
  8. 解决/usr/bin/ld: cannot find -lxxx
  9. [Git]Git远程仓库
  10. 随机数生成器python_Python中的随机数生成器
  11. Android中Xml工具类的封装
  12. python爬虫(十一)爬取贴吧图片
  13. vue 双花括号里面使用方法
  14. FTP(文件传输协议)
  15. 未来医疗大数据想象空间大
  16. python实现给视频添加字幕,并根据字幕添加语音
  17. 为什么是四次挥手不是三次挥手
  18. 网络带宽和速度的关系
  19. 计网/数据库面试题(更新中ing~~)
  20. Oracle数据恢复顾问(DRA)

热门文章

  1. IE浏览器访问BIEE报表,提示未登录解决办法
  2. css实现div阴影效果
  3. 计算机毕业设计之java+springboot基于vue的漫画之家系统-动漫信息网站
  4. 车载开发之CarLife技术
  5. FPGA实现LCD显示屏显示彩条
  6. -----小马跳槽记-----
  7. S32K14X-DAM学习笔记
  8. Redis哨兵模式(原理剖析)
  9. Java实现文字转语音(TTS)和指定路径播放音频文件
  10. MMSegmentation训练自己的分割数据集