手写数字识别实践指导手册

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

手写数字系统实践指导手册1问题描述设计一个简单的手写数字识别系统,能够识别手写输入的数字1-9并且能够识别选中的文本文件中的数字,应具有简单方便的操作界面,输入输出等。1.1功能需求分析通过分析,以及从用户的角度考虑,系统应该具有以下功能:(1)数字的手写输入。作为一个手写数字识别系统,首先应该能够让用户过绘制窗口进行数字绘制,系统得到用户的手写输入进行处理。(2)直接选择文件。用户还可以选择系统中的文本文件进行处理。(3)数据预处理。包括计算数据大小、二值化、格式化处理等。(4)数字提取。将经过二值化后的图像中的个数字区域进行提取,只有能够将数字进行准确的提取,才能将其一一识别。(5)基准库的选择与建立。选择一个可供系统训练和测试的样本库非常重要,本系统的训练集和测试集选择的是《机器学习实战》中所给的数据。(6)识别数字。经过训练集进行训练后,使用knn算法对需要识别的数字识别。2数据集获取任务要求:从网上爬取或者下载适合进行手写数字识别系统的训练集和测试集实践指导:方式一:自己从网上找适合的数据下载方式二:推荐数据集:“手写数字数据集的光学识别”一文中的数据集合,该文登载与2010年10月3日的UCI机器学习资料库中功能设计与实现3.1手写数字识别系统结构图:图一:系统结构图3.2识别用户选择手选文件功能设计与实现任务要求:用户可以自己从电脑中选择文本文件进行识别。实践指导:KNN分类器的构造思路及原理如下:1)选择训练集和测试集。系统所采用的数据集选用的是“手写数字数据集的光学识别”一文中的数据集合。0-9每个数字大约有200个训练数据20个测试数据。数字的文本格式如图所示。文本格式存储的数字的文件命名也很有特点,格式为:数字的值_该数字的样本序号,如图所示。2)格式化处理数据。将训练集中32*32的二进制图像矩阵转换为1*1024的向量。用于knn距离的计算3)将训练集中所有的文件内容存在列表中,创建一个m*1024的训练矩阵,矩阵的每行存储一个图像。4)将需要进行预测的测试集的图像矩阵转换为1*1024的向量。5)编写KNN算法对训练集进行训练,然后对测试集进行预测。如果使用python的话,可以调用sklearn.neighbors中的KNeighborsClassifier函数对测试集进行预测。5)真实值与预测值进行比较。数据中的文件按照规则命名,我们可以从文件名中解析出分类数字,如文件9_1.txt分类时9,他是数字9的第一个实例。3.3识别用户手写输入功能设计与实现任务要求:用户可以在手写识别系统的界面上用鼠标进行手写输入,然后系统自动识别出用户的输入。实践指导:识别用户手写输入的思路和原理如下:(1)简单说就是把数字划分成很多很多的小块,如图二所示:每个数字被划分成了4*5=20个小块。分好了小块以后,其实我们要知道每个小块是由很多个像点素构成的。比如数字8,是由5行4列共计:5*4=20个小块构成。(2)数一下每个小块内,有多少个黑色的点。比如第一行:第2个小块中,共有28个点,记为28.第3个小块中,共有10个点,记为10.第4个小B中,共有0个点,记为0.以此类推,可以计算出每一行的每一个小块数字是多少。(3)为了方便,我们把得到的特征,排成一排(数组)就好了。(4)照着葫芦画瓢,每个数字的特征其实都是一堆数字构成的。这个数字类似于我们的身份证号码,一般来说,是独一无二的。(5)识别原理:就是比较要识别的数字特征和步骤4中的哪个数字的特征最接近。这里为了方便,假设要识别数字“8”,然后看看怎么从一堆数字里面选出来他到底应该是几。具体方法时计算其欧式距离,距离越小代表其相似性越大。4系统评估(1)比较测试集中各个样本的分类结果和真实类别,统计下表中a,b,c,d取值。真实类别正例负例分类器判断正例AB负例CD(2)根据下列公式计算查准率、查全率、F1值、正确率查准率:查全率:F1值:正确率:如不能完全实现查准率、查全率、F1值、正确率,至少计算下准确率。5简单的系统界面设计良好的图形用户界面来展示系统功能。输入:用户选择的文本文件或者鼠标的手写输入输出:识别后的数字结果%100BAAprecision%100CAArecall%10021RPPRF%100DCBADAAccurarcy

1 / 7
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功