实验四、手写数字识别
一、实验目的
- 学会用分类算法解决实际问题
二、实验工具
- Anaconda
- sklearn
- matplotlib
- pandas
三、实验简介
概念介绍
图像识别(Image Recognition)是指利用计算机对图像进行处理、分析和理解,以识别各种不同模式的目标和对像的技术。
图像识别的发展经历了三个阶段:文字识别、数字图像处理与识别、物体识别。机器学习领域一般将此类识别问题转化为分类问题。
手写识别是常见的图像识别任务。计算机通过手写体图片来识别出图片中的字,与印刷字体不同的是,不同人的手写体风格迥异,大小不一, 造成了计算机对手写识别任务的一些困难。
数字手写体识别由于其有限的类别(0~9共10个数字)成为了相对简单 的手写识别任务。DBRHD和MNIST是常用的两个数字手写识别数据集
数据介绍
MNIST是一个包含数字0~9的手写体图片数据集,图片已归一化为以手写数 字为中心的28*28规格的图片。
MNIST由训练集与测试集两个部分组成,各部分 规模如下:
训练集:60,000个手写体图片及对应标签
测试集:10,000个手写体图片及对应标签
四、实验内容
1. 采用SVM算法实现手写数字识别。
例如,采用SVM对MINIST数据集进行分类。
import numpy as np
from sklearn import svm
from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
import _pickle as pickle
if __name__ == '__main__':
mnist = load_digits()
x,test_x,y,test_y = train_test_split(mnist.data,mnist.target,test_size=0.25,random_state=40)
model = svm.LinearSVC()
model.fit(x, y)
z = model.predict(test_x)
print('准确率:',np.sum(z==test_y)/z.size)
with open('./model.pkl','wb') as file:
pickle.dump(model,file)
SVM算法手写数字识别准确率0.94
import numpy as np
from sklearn import svm
from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
import _pickle as pickle
import matplotlib.pyplot as plt
mnist = load_digits()
x,test_x,y,test_y = train_test_split(mnist.data,mnist.target,test_size=0.25,random_state=40)
model = svm.LinearSVC()
model.fit(x,y)
z=model.predict(test_x)
print('准确率:',np.sum(z==test_y)/z.size)
with open('D:/shujukexue/model.pkl','wb') as file:
pickle.dump(model,file)
#学习后识别520到525六张图片并给出预测
model.predict(mnist.data[520:526])
#实际的520到525代表的数
mnist.target