版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、暑期生产实习报告 题 目 基于K-近邻算法的手写数字识别 学 院 电子工程学院 专 业 智能科学与技术 学生姓名 学 号 指导老师 提交日期 摘要基于k-近邻算法对经典的手写数字集mnist中的测试数据进行分类。用MATLAB语言编写代码,将原始数据读入,形成三维矩阵,再通过k近邻算法计算出待测数据周围最近的k个数据,将待测数据分为k个数据中最多的类。本次实验只是用mnist数据中训练图像前6000张,测试图像前1000张。关键词:k-近邻算法,数据分类,手写数字集,mnist数据集目录一 绪论51.1 k-近邻算法的基本概念51.2 mnist数据集5二 k-近邻算法62.1 k-近邻算法的
2、工作原理62.2 k-近邻算法的算法步骤62.3 k-近邻算法的优缺点6三 k-近邻算法分类mnist的具体方法6四 实验结果与分析74.1 待测图像74.2 实验结果94.3结果分析11五 实验代码11六 总结与展望166.1 总结166.2 展望16参考文献171、 绪论 1.1 手写数字识别的基本概念手写数字识别是图像识别的一个分支,它研究的对象是:如何利用电子计算机自动辨认人手写的阿拉伯数字。在整个OCR领域中,最为困难的就是脱机手写字符的识别。到目前为止,尽管人们在脱机手写英文、汉字识别的研究中已取得很多可喜成就,但距实用还有一定距离。而在手写数字识别这个方向上,经过多年研究,研究工
3、作者已经开始把它向各种实际应用推广,为手写数据的高速自动输入提供了一种解决方案。1.2 手写数字识别的实际背景 字符识别处理的信息可分为两大类:一类是文字信息,处理的主要是用各国家、各民族的文字(如:汉字、英文等)书写或印刷的文本信息,目前在印刷体和联机手写方面技术已趋向成熟,并推出了很多应用系统;另一类是数据信息,主要是由阿拉伯数字及少量特殊符号组成的各种编号和统计数据,如:邮政编码、统计报表、财务报表、银行票据等等,处理这类信息的核心技术是手写数字识别。这几年来我国开始大力推广的“三金”工程在很大程度上要依赖数据信息的输入,如果能通过手写数字识别技术实现信息的自动录入,无疑会促进这一事业的
4、进展。因此,手写数字的识别研究有着重大的现实意义,一旦研究成功并投入应用,将产生巨大的社会和经济效益。1.3 手写数字识别的理论意义手写数字识别作为模式识别领域的一个重要问题,也有着重要的理论价值:(1)阿拉伯数字是唯一的被世界各国通用的符号,对手写数字识别的研究基本上与文化背景无关,这样就为各国、各地区的研究工作者提供了一个施展才智的大舞台。在这一领域大家可以探讨,比较各种研究方法。(2)由于数字识别的类别数较小,有助于做深入分析及验证一些新的理论。这方面最明显的例子就是人工神经网络,相当一部分的人工神经网络模型都以手写数字识别作为具体的实验平台,验证理论的有效性,评价各种方法的优缺点。(3
5、)尽管人们对手写数字的识别已从事了很长时间的研究,并已取得了很多成果,但到目前为止机器的识别本领还无法与人的认知能力相比,这仍是一个有难度的开放问题。 (4)手写数字的识别方法很容易推广到其它一些相关问题,一个直接的应用是对英文这样的拼音文字的识别。事实上,很多学者就是把数字和英文字母的识别放在一块儿研究的。1.4 基于手写数字识别的典型应用手写数字识别有着极为广泛的应用前景,这也正是它受到世界各国的研究工作者重视的一个主要原因。下面我们将介绍基于手写数字识别的应用系统的特殊要求,以及一些以手写数字识别技术为基础的典型应用。(1) 手写数字识别在大规模数据统计中的应用在大规模的数据统计(如:行
6、业年鉴、人口普查等)中,需要输入大量的数据,以前完全要手工输入,则需要耗费大量的人力和物力。近年来在这类工作中采用OCR技术已成为一种趋势。因为在这种应用中,数据的录入是集中组织的,所以往往可以通过专门设计表格和对书写施加限制以便于机器的自动识别。目前国内的大多数实用系统都要求用户按指定规范在方格内填写。另外,这些系统往往采用合适的用户界面对识别结果做全面的检查,最终保证结果正确无误。可以看出,这是一类相对容易的应用,对识别核心算法的要求比较低,是目前国内很多单位应用开发的热点。(2) 手写数字识别在财务、税务、金融领域中的应用财务、税务、金融是手写数字识别大有可为的又一领域。随着我国经济的迅
7、速发展,每天等待处理的财务、税务报表、支票、付款单等越来越多。如果能把它们用计算机自动处理,无疑可以节约大量的时间、金钱和劳力。与上面提到的统计报表处理相比,在这个领域的应用难度更大,原因有:1、对识别的精度要求更高;2、处理的表格往往不止一种,一个系统应能智能地同时处理若干种表格;3、由于处理贯穿于整个日常工作之中,书写应尽量按一般习惯(如:不对书写者的写法做限定,书写时允许写连续的字串,而不是在固定的方格内书写),这样对识别及预处理的核心算法要求也提高了。(3) 手写数字识别在邮件分拣中的应用随着人们生活水平的提高,经济活动的发展,通信联系的需求使信函的互换量大幅度增加,我国函件业务量也在
8、不断增长,预计到2000年,一些大城市的中心邮局每天处理量将高达几百万件,业务量的急剧上升使得邮件的分拣自动化成为大势所趋。在邮件的自动分拣中,手写数字识别(OCR)往往与光学条码识别、人工辅助识别等手段相结合,完成邮政编码的阅读。目前使用量最大的OVCS分拣机的性能指标:OCR拒分率30%,OCR分拣差错率1.1%。1.5 手写数字识别技术展望随着国家信息化进程的加快,手写数字识别的应用需求将越来越广泛,因此应当加强这方面的研究工作。作者认为,应用系统的性能的关键与瓶颈仍然在于手写数字识别核心算法性能上,最终目标是研究零误识率和低拒识率的高速识别算法。此外,尽早建立反映中国人书写习惯的、具有
9、国家标准性质的手写数字样本库也是当务之急。2、 k近邻算法2.1 k-近邻算法的基本概念k-近邻算法,即是给定一个训练数据集,对新的输入实例,在训练数据集中找到与该实例最邻近的k个数据, 这k个数据的多数属于某个类,就把该输入实例分类到这个类中。k-近邻算法中,所选择的邻居都是已经正确分类的对象。该方法在定类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。 k-近邻方法虽然从原理上也依赖于极限定理,但在类别决策时,只与极少量的相邻样本有关。由于k-近邻方法主要靠周围有限的邻近的样本,而不是靠判别类域的方法来确定所属类别的,因此对于类域的交叉或重叠较多的待分样本集来说,k-近
10、邻方法较其他方法更为适合。k-近邻算法不仅可以用于分类,还可以用于回归。通过找出一个样本的k个最近邻居,将这些邻居的属性的平均值赋给该样本,就可以得到该样本的属性。更有用的方法是将不同距离的邻居对该样本产生的影响给予不同的权值(weight),如权值与距离成正比(组合函数)。该算法在分类时有个主要的不足是,当样本不平衡时,如一个类的样本容量很大,而其他类样本容量很小时,有可能导致当输入一个新样本时,该样本的K个邻居中大容量类的样本占多数。 该算法只计算“最近的”邻居样本,某一类的样本数量很大,那么或者这类样本并不接近目标样本,或者这类样本很靠近目标样本。无论怎样,数量并不能影响运行结果。可以采
11、用权值的方法(和该样本距离小的邻居权值大)来改进。该方法的另一个不足之处是计算量较大,因为对每一个待分类的文本都要计算它到全体已知样本的距离,才能求得它的K个最近邻点。目前常用的解决方法是事先对已知样本点进行剪辑,事先去除对分类作用不大的样本。该算法比较适用于样本容量比较大的类域的自动分类,而那些样本容量较小的类域采用这种算法比较容易产生误分。2.2 k近邻算法的工作原理存在一个样本数据集合(即训练样本集),并且样本集中每个数据都存在标签(即每个数据与所属分类的对应关系)。输入没有标签的新数据之后,将新数据的每个特征与样本集中数据对应的特征进行比较,算法将提取出样本集中特征最相似数据(最近邻)
12、的分类标签。一般选择样本数据集中前K个最相似的数据,k一般不大于20的整数。2.3 k近邻算法的算法步骤Step.1 计算已知类别数据集中的点与当前点之间的距离;Step.2 按照距离递增次序排序;Step.3 选取与当前点距离最小的k个点;Step.4 确定前k个点所在类别的出现频率;Step.5 返回前k个点出现频率最高的类别作为当前点的预测分类。2.4 k-近邻算法的优缺点k-近邻算法拥有以下优点:精度高、对异常值不敏感、无输入数据假定 k-近邻算法拥有以下缺点:时间复杂度和空间复杂度都很高三 k近邻算法分类mnist的具体方法数据先预处理,将下载的初始图像数据读入MATLAB,并储存为
13、三维的矩阵,再读入标签文件,储存为二维矩阵,以便后面的使用。手写数字图像都为28像素*28像素,对于每一个数字图像,计算其与每一张训练图像的距离,对于一张待测图像与训练图像,计算每一个像素的差值,如果差值大于参数45,则这两站图的距离加一,直到784个像素点全部计算完毕,得到两张图的距离。再用排序找到与该张数字图像最近的k张图像,对距离最近的k张图像根据训练数据标签进行分类,找到k张图像中最多的数字,该张测试数字图像即划分为该数字类。四 实验结果与分析4.1 待测图像图4.1 待测第1张图图4.2待测第2张图图4.3 待测第3张图图4.4 待测第4张图图4.5 待测第5张图图4.6 待测第6张
14、图4.2 实验结果图4.7 训练样本三维矩阵图4.8测试样本三维矩阵图4.9 距离矩阵图4.10 测试图像分类结果图4.11 正确率图4.12 工作区4.3结果分析因为所使用的电脑限制,只选取了部分数据集进行实验,所以准确性会有所下降,训练样本数据的增加在一定程度上可以提升正确率。其次参数的选择对于实验结果的影响比较巨大,本次实验中用到了两个参数,即计算距离时的参数45,以及参数k,两个参数需要多次实验以选取最佳参数来得到最优分类结果。4.4 mnist数据集Google实验室的Corinna Cortes和纽约大学柯朗研究所的Yann LeCun建有一个手写数字数据库,含有0-9的60000
15、张训练图像和0-9的10000测试图像两种,每张图片灰度级都是8,且每张图片可以使用一个784大小的向量表征。下载网址 五 实验代码1主程序clccleark=100;%k距离a=1000;%待测数据个数b=6000;%训练数据个数load(test_IMAGE.mat);%载入待测图像矩阵load(mnist_train.mat);%载入训练图像矩阵distance=zeros(a,b);number=zeros(1,10);tested_number=zeros(1,a);FID = fopen(t10k-labels.idx1-ubyte,r);%载入待测图像标签magicnumber=
16、fread(FID,2);size=fread(FID,2);rows=fread(FID,2); colums=fread(FID,2);test_label=fread(FID);FID2 = fopen(train-labels.idx1-ubyte,r);%载入训练图像标签magicnumber=fread(FID2,2);size=fread(FID2,2);rows=fread(FID2,2); colums=fread(FID2,2);train_label=fread(FID2);for i=1:a for j=1:b for p=1:28 for q=1:28 if (tes
17、t_IMAGE(p,q,i)-train_IMAGE(p,q,j)45 distance(i,j)=distance(i,j)+1; end end end endEnd%计算距离矩阵sorted_distance,sorted_position = sort(distance,2);%距离矩阵排序for i=1:a for q=1:10 number(q)=0; end for j=1:k for p=1:10 if train_label(sorted_position(i,j)=(p-1) number(p)=number(p)+1; end endend%计算k距离内数据个类数目 so
18、rted_number,biggest=sort(number,2); tested_number(1,i)=biggest(10)-1;%给待测图像分类endright=0;for i=1:a if tested_number(i)=test_label(i) right=right+1; endendright_rate=right/a;%计算正确率2读取原始数据程序clccleartest_IMAGE=zeros(28,28,10000);FID = fopen(t10k-images.idx3-ubyte,r);magicnumber=fread(FID,4);size=fread(FID,4);rows=fread(FID,4); colums=fread(FID,4);
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论