您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 人事档案/员工关系 > 基于KNN算法的手写字母识别
龙源期刊网算法的手写字母识别作者:刘方舟来源:《全国流通经济》2019年第03期摘要:数据挖掘是指通过多种算法从海量数据中搜索隐藏于其中有用信息的过程。在无序中寻找有序、在纷乱中发现规律,是数据挖掘的核心价值所在。它主要通过数理统计、在线分析处理、情报检索、机器学习、专家系统、模式识别等诸多方法来实现既定目标。本文利用数据挖掘中的K近邻算法(KNN),根据从大量手写英文字母图像中提取出的原始特征属性,对手写字母进行计算机算法自动分类,从而达到对手写字母识别的目的。这对于在电脑编辑大大多于手写文本的快节奏现实生活中,及时准确识别出手写文献信息内容,具有重要意义。关键词:数据挖掘;人工智能;KNN;手写英文字母识别中图分类号:F062.9文献识别码:A文章编号:2096-3157(2019)03-0097-03一、前言在经济全球化、社会信息化时代,信息传播更多借助于网络,计算机技术越来越成为人们生活不可分割的一部分。秉笔传书的几率日益下降,而这一趋势的加快,客观造成了人们书写规范性的弱化,进而带来手写体识别难度的增加。但不论电脑能在多大程度上代替人的劳动,手动书写仍然在诸多工作、学习、生活领域占据主导地位。上至文件的签署、领导的批示、高管的签字,下至课堂教学的板书、会议精神的速记、医生开出的药方,都面临如何快速准确识别的问题,因此,借助人工智能实现手写文书的识别,就成为当下信息交互迫切需要的应用性技术[1]。这就为数据挖掘技术在手写文献识别的运用提供了发挥的空间。近年来,数据挖掘在多个领域显示了技术优势[2],如Siri声音识别、美颜相机人脸表情识别、情绪识别、智能安全监控系统行人姿态识别等,这对于实行精确化管理、快速侦办案件、多语种相互转换、疑难病理分析等,都带来了极大便利[3]。如今,在手写字母识别领域,人们也进行了积极探索,取得了可喜进展。但与其他领域相比,还有太多的难题需要破解,关键是技术路径的选择和开发,急需创新突破。二、研究内容手写字母识别是计算机自动辨认手写体英文字母的一种技术,是光学字符识别技术的一个分支[4]。26个英文字母(A,B,C,…,Z)是构成英文单词、句子的最基本元素,在以英语为主要语言的国家的日常生活中十分常用。手写字母识别的研究通用性很强,如果能够研究开发先进的计算机数据挖掘算法,使得计算机能够自动识别人们手写的英文字母,对其进行分析鉴别,将具有重要的使用意义[5]。龙源期刊网在人们的日常生活中,手写字母识别有着十分广泛的应用,例如,将该技术应用于信用卡签名,用计算机对信用卡签名进行自动核对,防止信用卡盗刷,大大提高其安全性。使用手写字母识别技术可以将历经艰险保存到现在的古代文献方便地录入至电脑中,安全地保存其数据,避免了传统方法中主要依赖于人力手工录入的弊端,大大节省了人力、物力和财力,防止数据随着原件的损坏而销毁。使用手写字母识别技术可以将纸上的文字录入至电脑中,方便了历史资料、文獻等纸媒体文字的保存,使后续的查阅与修改更加方便、快捷。手写字母识别还可以应用于电脑阅卷系统,通过将学生在考场上完成的英语作文录入至电脑中,转换成标准电脑英文字体的文字,方便阅卷者进行判分,从而减少了由于学生自身能力之外的因素(如笔迹混乱,字体模糊,书写整洁度低等)给老师带来的阅卷体验的影响,增加了考试中的公平性。三、研究方法本实验的主要目的是利用数据挖掘方法[6],根据从大量手写字母图像中提取出的数个原始特征属性进行分类,从而达到手写字母识别的目的。目前最常用的分类算法是KNN算法[7]。邻近算法,或者说K最近邻(KNN,k-NearestNeigh-bor)分类算法是数据挖掘分类技术中最简单的方法之一。所谓K最近邻,就是K个最近的邻居的意思,说的是每个样本都可以用它最接近的K个邻居来代表。KNN算法的核心思想是,如果一个样本在特征空间中的K个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性。该方法在确定分类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。KNN方法在类别决策时,只与极少量的相邻样本有关[8]。KNN具体计算步骤如下:1.计算每一个测试数据与所有训练数据之间的距离,这里距离的度量通常采用欧式距离以及曼哈顿距离;2.将所得到的所有距离,按照递增关系进行排序;3.选取距离最小的K个样本;4.确定前K个样本所述的类别标签;5.返回前K个样本中出现频率最高的类别作为测试数据的预测分类。6.对第2个,第3个…测试样本重复步骤1-步骤5。龙源期刊网算法具有以下几个显著的优点:(1)简单、有效,因为KNN算法本身思想较为简单,没有过多的理论推导与算法步骤,故而实现起来较为方便。(2)计算的时间只受样本量大小的影响,样本量越高,计算时间越长。(3)因为KNN算法只涉及计算测试样本到训练样本的距离,计算本身较为简单,所以该算法比较适用于样本容量比较大的分类问题,该方法在许多现实的分类问题中都取得了较好的分类结果。KNN算法缺点:(1)KNN算法是懒散学习方法,不需要用训练样本事先训练一个模型用来对测试样本进行分类。(2)输出的可解释性不强,不能够简单的说明哪个特征对于分类起的作用最大。(3)该算法在分类时有个主要的不足是,当样本类别不平衡时,例如一个类别的样本量很大,而另一个类别样本容量很小时,有可能导致当输入一个新的测试样本时,该样本的K个最近的邻居中容量较大的那个类别的样本占多数,导致将测试样本的类别过多地划分到类别数较多的那个类别中。(4)计算量较大,因为对每一个测试样本都需要计算他与所有训练样本之间的距离,并且需要进行排序运算,虽然计算过程简单,但是计算量较大,会对计算机的性能提出挑战[9]。需要注意的是,KNN算法受一个重要参数的影响,最近邻个数K的选择会对算法的结果产生很大影响。如果K值较小,就相当于只计算少数几个紧邻的样本类别,极端情况下当K=l(最近邻算法,1-NN),测试样本的类别只受和他最近的那一个样本的影响,极容易产生错误的结果,而如果这个样本恰好是噪声或者不稳定的数据时,预测就会出错,测试误差很大。也就是说,当K值较小的,会产生过拟合的现象,结果不稳定。如果K值较大,就相当于用很大邻居中的训练实例进行预测,极端情况是K=n(即所有训练样本的个数),测试样本的结果是训练数据集中实例最多的那个类别,这样会产生欠拟合。在应用中,一般选择较小K并且K是奇数,通常选取多个K来进行算法的运行,并选取分类结果过最好的那个参数。四、实验分析我们的实验数据来自UCI数据集中的LetterRecognition数据集,共包含20000个黑白像素表示的英文字母表中的26个大写字母,字母图像基于20种不同的字体,其中每个字母都被随机扭曲,产生20000种独特的字符,每个字符都被转换为16个原始特征属性。在实验的具体实施中,我们使用交叉验证的手段,即将LetterRecognition数据集中的20000个数据随机等分为10份,每份有2000个数据,依次将每一份数据作为测试集,其余9份数据作为训练集进行计算,以得到所有字母的识别结果。根据KNN算法,在训练集中找到K个与测试集中某一字母的距离最近者的类别作为该字母的识别结果。由于实验涉及数据量庞大(20000个字符,26种英文字母,16种不同的原始特征属性),因此需要借助强大的科学计算工具Matlab来分析数据。Matlab内置了knnclassify函数,可以进行KNN计算,具体代码如下:c=knnclassify(testing(:,1:end-l),training(:,1:end-1),training(:,end),3,,euclidearn)龙源期刊网函数的参数中,第一个参数表示测试集的16个特征,第二个参数表示训练集的16个特征,第三个参数表示训练集的26个类别,第四个参数表示K的值为3,第五个参数表示距离的计算采用欧式距离的计算方法。图1显示了26类样本中每一类包含的样本数及其所占比例,可以看出LetterRecognition数据集所包含的样本比例十分均衡,每一类包含的样本数相差无几,符合使用KNN算法进行手写字母识别的必要条件。图1最后一列显示了26类样本中每一类样本的分类精度,可以看出字母A是分类精度最高的,而字母H是分类精度最低的。其原因可能在于字母A的形状比较独特,其16个特征的数值与其他字母的距离很大,而字母H的形状与很多字母类似,其16个特征的数值与其他字母的距离相近,容易发生错分的现象。表中显示了手写字母分类准确率与最近邻个数K的关系,可以看出数据集对欧式距离与曼哈顿距离的选择不敏感。从图中还可以看出K在取3和5时手写字母分类准确率较高。K取1时测试实例只和最接近的一个样本有关,训练误差很小,但是如果这个样本恰好是噪声,预测就会出错,测试误差很大,故分类结果具有偶然性,不具有代表性。K取较大值时计算范围太大,分类结果容易受到距离近、比例大的样本干扰,不稳定。图2显示了KNN算法的手写字母识别结果,叫做混淆矩阵,其中第i列第j行的数值表示英文字母表中第i个字母被分成第j个字母的数量。例如第16列第6行的数值38表示数据集中有38个字母P被分类到字母F,其原因可能是P与F有很多相似的特征,手写字符比较相像导致错分较多。其余现象(如第9列第10行的数值29表示数据集中有29个字母I被分类到字母J)的原因与之类似。总体来看,只要数据集中样本比例比较均衡,K值选取合理,KNN算法就能达到较高的精度。五、总结在大数据时代,数据挖掘技术的异军突起,极大突破了人们对零散信息的价值认知,数据里的“金矿”被逐渐打捞上来,实现变废为宝。本论文主要运用数据挖掘中的KNN算法,对手写字母图像进行数据处理,通过量的迭加找到特征属性,从而形成识别编码,最终实现正确解读。本文找到了手写字母识别的可行途径,证明KNN算法简单有效。但是当数据库包含的样本比例不均衡时,KNN算法容易受到占比大的类别的干扰,造成误分。所以在运用KNN算法时,需要选择合适的数据库并对数据库进行合理的编辑,以达到准确的分类结果。在现实生活中,我们可以充分利用数据挖掘技术,在海量数据中整理出富有价值的信息,促进数据挖掘技术本身以及社会的发展。参考文献:[1]谭仁杰.人工智能在手写字符识别领域的应用[J].中国新通信,2018,(20).龙源期刊网[2]黄永毅,龚垒.计算机数据挖掘技术的开发及其应用[J].电子技术与软件工程,2018,(22).[3]王光宏,蒋平.数据挖掘综述[J].同济大学学报(自然科学版),2004,32(2).[4]南淑萍,张博,王峰.光学字符识别技术在手写体字符识别中的应用研究[J].长春师范大学学报,2015,(12).[5]王榕峰.光学手写数字字符识别技术的研究[D].广西师范大学,2014.[6]辛英.基于k-邻近算法的手写识别系统的研究与实现[J].电子设计工程,2018,(7).[7]桑应宾.基于k近邻的分类算法研究[D].重庆大学,2009.[8]闭小梅,闭瑞华.Knn算法综述[J].科技创新导报,2009,(14).[9]奉国和,吴敬学.Knn分类算法改进研究进展[J].图书情报工作,2012,56(21).
本文标题:基于KNN算法的手写字母识别
链接地址:https://www.777doc.com/doc-4868320 .html