15.手写数字识别-小数据集(load_digits)

1.手写数字数据集

  • from sklearn.datasets import load_digits
  • digits = load_digits()

 15.手写数字识别-小数据集(load_digits)_第1张图片

 

2.图片数据预处理

  • x:归一化MinMaxScaler()
  • y:独热编码OneHotEncoder()或to_categorical

 15.手写数字识别-小数据集(load_digits)_第2张图片

  • 训练集测试集划分
  • 张量结构

15.手写数字识别-小数据集(load_digits)_第3张图片

3.设计卷积神经网络结构

  • 绘制模型结构图,并说明设计依据。

先导入相关的包

15.手写数字识别-小数据集(load_digits)_第4张图片

然后设计模型结构,因为图片是(8,8)的像素规模,在池化方面,就最多能池化3次

在卷积上,可以多次卷积,我选择的(3,3)的卷积核,然后卷积的方式是same,即卷积完成后,得到和卷积前同样大小的结果。

15.手写数字识别-小数据集(load_digits)_第5张图片

 构建模型结果:

15.手写数字识别-小数据集(load_digits)_第6张图片

4.模型训练

  • model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
  • train_history = model.fit(x=X_train,y=y_train,validation_split=0.2, batch_size=300,epochs=10,verbose=2)

15.手写数字识别-小数据集(load_digits)_第7张图片

5.模型评价

  • model.evaluate()
  • 交叉表与交叉矩阵
  • pandas.crosstab
  • seaborn.heatmap

15.手写数字识别-小数据集(load_digits)_第8张图片

 观察预测值和实际值

15.手写数字识别-小数据集(load_digits)_第9张图片

 通过交叉矩阵观察预测值与实际值的符合情况

15.手写数字识别-小数据集(load_digits)_第10张图片

  通过热力图观察预测值与实际值的符合程度

15.手写数字识别-小数据集(load_digits)_第11张图片

 

小结:模型构建完成后,得到的精确率在96%左右,说明模型的构建还是有一定的不足,应该更加优化卷积和池化的安排,尝试不同的卷积核得到的模型

从热力图看得出来,在预测数字8的时候容易和数字1混淆,如果是实际应用中则需要加多数字8的样本,让模型能够更好的学习到数字8的特征。也能进行更好的预测。

你可能感兴趣的:(15.手写数字识别-小数据集(load_digits))