毕业设计(论文):THE RESEARCH & ACHIEVE OF CLASSIFIER BASED ON THE K-NEAREST NEIGHBOR ALGORITHM.docx

上传人:文****钱 文档编号:39990 上传时间:2018-05-07 格式:DOCX 页数:39 大小:206.49KB
下载 相关 举报
毕业设计(论文):THE RESEARCH & ACHIEVE OF CLASSIFIER BASED ON THE K-NEAREST NEIGHBOR ALGORITHM.docx_第1页
第1页 / 共39页
毕业设计(论文):THE RESEARCH & ACHIEVE OF CLASSIFIER BASED ON THE K-NEAREST NEIGHBOR ALGORITHM.docx_第2页
第2页 / 共39页
毕业设计(论文):THE RESEARCH & ACHIEVE OF CLASSIFIER BASED ON THE K-NEAREST NEIGHBOR ALGORITHM.docx_第3页
第3页 / 共39页
毕业设计(论文):THE RESEARCH & ACHIEVE OF CLASSIFIER BASED ON THE K-NEAREST NEIGHBOR ALGORITHM.docx_第4页
第4页 / 共39页
毕业设计(论文):THE RESEARCH & ACHIEVE OF CLASSIFIER BASED ON THE K-NEAREST NEIGHBOR ALGORITHM.docx_第5页
第5页 / 共39页
点击查看更多>>
资源描述

1、基于K近邻法的分类器的研究与实现基于K近邻法的分类器的研究与实现摘要模式识别的目的就是对未知的样本,判断它所在的类别。人类的模式识别能力使得人们可以很好的认识周围的环境并与之交流,如果计算机也具有类似的能力,那么其智能程度将会大大提高,可以发挥更大的功能,更好的为人类服务。本文的研究课题就属于计算机模式识别领域。分类器是模式识别系统的重要组成部分;也是机器学习的重要研究领域。本文主要研究对象是KNN分类方法,运用K近邻法KNEARESTNEIGHBOR对数据进行分类,并对分类结果进行比较研究。本文的研究工作主要探讨基于K近邻法的分类器的实现,主要集中在K近邻法的理论分析,算法实现。本文首先介绍

2、了数据挖掘的目的、意义及现状,阐述了K近邻算法在数据挖掘中的地位和作用,然后对K近邻法进行了详细的研究与分析,并且实现基于K近邻法的分类器。本设计采用SQLSERVER数据库系统和CNET开发工具进行分析研究。关键词模式识别;数据挖掘;机器学习;K近邻法;分类器基于K近邻法的分类器的研究与实现THERESEARCHITISALSOANIMPORTANTRESEARCHINTHEAREAOFMACHINELEARNINGTHISPAPERMAINLYTARGETSKNNCLASSIFICATIONMETHODS,USINGKNEARESTNEIGHBORFORDATACLASSIFICATION

3、,ANDCOMPAREDTHERESULTSTHISARTICLERESEARCHONTHEACHIEVEOFCLASSIFIERBASEDONTHEKNEARESTNEIGHBORALGORITHMMAINLYCONCENTRATEDINTHEKNEARESTNEIGHBORTHEORETICALANALYSISANDALGORITHMFIRSTOFALL,IINTRODUCETHEPURPOSE、MEANINGANDRECENTDEVELOPMENTOFDATAMININGANDEXPATIATETHESTATUSANDFUNCTIONOFKNEARESTNEIGHBOURINTHISFI

4、ELDTHENRESEARCHANDANALYSISTOTHEKNEARESTNEIGHBORDETAILEDANDACHIEVETHECLASSIFIERBASEDONKNEARESTNEIGHBORIDESIGNTHISPROGRAMWITHSQLSERVERDATABASESYSTEMANDCNETDEVELOPMENTTOOLSFORANALYSISANDSTUDYKEYWORDSPATTERNRECOGNITIONDATAMINING,MACHINELEARNINGKNEARESTNEIGHBOURCLASSIFIER基于K近邻法的分类器的研究与实现目录1绪论111课题背景及目的11

5、2国内外研究状况213课题研究方法214论文构成及研究内容32分类器概述421分类器概念422分类器构造方法423近邻分类器的分类原理53K近邻法的研究与分析831KNN概念832K近邻法算法研究9321K近邻算法数学模型9322K近邻法研究方法9323KNN算法需要解决的问题104K近邻法的分类器的设计与编程实现1241开发环境的选择12411数据库系统选择12412开发语言的选择1242程序设计实现14421界面设计14422功能模块设计15423数据库连接17424程序运行与调试1943程序实现结果与分析205结论21参考文献22基于K近邻法的分类器的研究与实现致谢23附录源程序代码24

6、附件1开题报告35附件2英文原文及翻译40基于K近邻法的分类器的研究与实现第1页共35页1绪论模式识别或者通俗一点讲自动分类的基本方法有两大类,一类是将特征空间划分成决策域,这就要确定判别函数或确定分界面方程。而另一种方法则称为模板匹配1,即将待分类样本与标准模板进行比较,看跟哪个模板匹配度更好些,从而确定待测试样本的分类。近邻法则在原理上属于模板匹配。一般模式识别系统都由相互联系的两大部分组成,即特征提取器和分类器。分类的方法包括统计的方法、近邻法、神经网络分类法、无监督聚类法和新出现的基于统计学习理论的支持向量机法,K近邻分类法是近邻分类法的扩展。它将训练样本集中的每个样本都作为模板,用测

7、试样本与每个模板做比较,看与哪个模板最相似即为近邻,就按最近似的模板的类别作为自己的类别。譬如A类有10个训练样本,因此有10个模板,B类有8个训练样本,就有8个模板。任何一个待测试样本在分类时与这18个模板都算一算相似度,如最相似的那个近邻是B类中的一个,就确定待测试样本为B类,否则为A类。因此原理上说近邻法是最简单的。11课题背景及目的数据挖掘是近年来很多领域竟相研究的一个热点领域,而分类器是数据挖掘的一个研究分支2。为了研究基于分类的K近邻算法,先对数据挖掘做一个概要的介绍。数据挖掘是八十年代,投资AI研究项目失败后,AI转入实际应用时提出的。它是一个新兴的,面向商业应用的AI研究。数据

8、挖掘是从大量的数据中,抽取出潜在的、有价值的知识(模型或规则)的过程。数据挖掘有分类、估值、预言、相关性分组或关联规则、聚集、描述和可视化六种分析方法。本文讨论的分类就是首先从数据中选出已经分好类的训练集,在该训练集上运用数据挖掘分类的技术,建立分类模型,对于没有分类的数据进行分类。K近邻法是最显著的模式识别系统统计学方法之一,已经有40多年的历史,它很早就被用于文本分类研究。K近邻算法的最大优点是简单,直观,容易实现,应用范围广,几乎可以用于各种不同类型的数据结构;知识以样本的形式表示,不需要进行模型的训练,容易获取,维护方便;在关系数据库中,算法可以用SQL语句来实现;非常适用于分布是计算

9、。基于K近邻法的分类器的研究与实现第2页共35页缺点是需要大量的已经准备好的历史数据;在对一个新样本分类时,要搜索所有的训练样本来寻找最近的邻居,计算量大,时间代价高;由于训练数据常驻内存,会占用大量的内存;且分类结果与参数有关。在模板数量很大时其错误率指标还是相当不错的。也就是说近邻法的研究还是有必要的。12国内外研究状况近十几年来,人们利用信息技术生产和搜集数据的能力大幅度提高,无数个数据库被用于商业管理、政府办公、科学研究和工程开发等,这一势头仍将持续发展下去。于是,一个新的挑战被提了出来在这被称之为信息爆炸的时代,信息过量几乎成为人人需要面对的问题。如何才能不被信息的汪洋大海所淹没,从

10、中及时发现有用的知识,提高信息利用率呢要想使数据真正成为一个公司的资源,只有充分利用它为公司自身的业务决策和战略发展服务才行,否则大量的数据可能成为包袱,甚至成为垃圾。因此,面对“人们被数据淹没,人们却饥饿于知识”的挑战,数据挖掘和知识发现DMKD技术应运而生,并得以蓬勃发展,越来越显示出其强大的生命力。数据挖掘DATAMINING就是从大量的、不完全的、有噪声的、模糊的、随机的数据中,提取隐含在其中的、人们事先不知道的、但又是潜在有用的信息和知识的过程。还有很多和这一术语相近似的术语,如从数据库中发现知识KDD、数据分析、数据融合DATAFUSION以及决策支持等。人们把原始数据看作是形成知

11、识的源泉,就像从矿石中采矿一样。原始数据可以是结构化的,如关系型数据库中的数据,也可以是半结构化的,如文本、图形、图像数据,甚至是分布在网络上的异构型数据。发现知识的方法可以是数学的,也可以是非数学的;可以是演绎的,也可以是归纳的。发现了的知识可以被用于信息管理、查询优化、决策支持、过程控制等,还可以用于数据自身的维护。因此,数据挖掘是一门广义的交叉学科,涉及到人工智能、数据库、数理统计、机器学习、知识获取、数据可视化、高性能计算等多个领域3。13课题研究方法KNNKNEARESTNEIGHBOR分类器是一种在线分类器,即分类的时候,直接从训练样本中找出与测试样本最接近的K个样本,以判断测试样

12、本的类属。KNN分类器的可扩展性比较差,因为每判决一个测试样本,都要将其与所有训练样本比较一次,计算距离。但是KNN分类器对处理与训练样本类似页面的时候的精度比较高。所以在样本比较少而对分类速度要求不高的情况下,可以使用KNN分类器同样KNN分类器也可以应用在只有正例基于K近邻法的分类器的研究与实现第3页共35页训练样本的情况下。在小规模仿真的时候使用精度较高的KNN分类器,在大规模仿真和实际WEB检验的时候使用KNN分类器就没有有更好推广能力。可以看出,尽管近邻法有其优良品质,但是它的一个严重弱点与问题是需要存储全部训练样本,以及繁重的距离计算量。但以简单的方式降低样本数量,只能使其性能降低

13、,这也是不希望的。14论文构成及研究内容分类器的构造方法有多种,本文主要以近邻分类器为研究对象,通过对K近邻分类原理的分析来构造分类器。本文的第1章是绪论,说明本设计课题的来源、目的、意义、国内外研究状况、应解决的问题急应达到的技术要求。本文的第2章介绍了分类器的概念和分类器的构造方法。本文的第3章介绍的近邻分类器的分类原理,KNN概念,K近邻法算法研究,K近邻算法数学模型,K近邻法研究方法,KNN算法需要解决的问题。其中K近邻算法必须明确两个基本的因素最近案例的数目K和距离的尺度。对这个问题进行了讨论,并对KNN算法做出了评价。本文的第4章是K近邻法的分类器的设计与编程实现,主要包括以下几个

14、方面的内容开发环境的选择,K近邻法程序实现,数据库连接,程序运行与调试及程序实现结果与分析。最后一章总结论文中的主要工作和结果。基于K近邻法的分类器的研究与实现第4页共35页2分类器概述21分类器的概念分类器的定义输入的数据含有千万个记录,每个记录又有很多个属性,其中有一个特别的属性叫做类(例如信用程度的高,中,低)。分类器的目的就是分析输入的数据,并建立一个模型,并用这个模型对未来的数据进行分类,数据分类技术在信用卡审批、目标市场定位、医疗诊断、故障检测、有效性分析、图形处理及保险欺诈分析等领域,都可以看到分类器广泛应用。分类是一种典型的有监督的机器学习方法3,其目的是从一组已知类别的数据中

15、发现分类模型,以预测新数据的未知类别。用于分类的数据是一组已知类别的样本,每个样本包含一组相同的属性。根据在分类中的作用,属性可以分为条件属性和目标属性两种。这样,一个样本就可以表示为X1,X2,XM,Y的形式,其中,XI是条件属性,Y是目标属性。分类的目的就是发现X1,X2,XM和Y之间的依赖关系,这种依赖关系又称为分类模型或者分类器。可以认为,分类器就是一个函数,它的输入是未知类别的样本,输出是样本的类别。22分类器的构造方法分类的方法不同,模型的表示形式就不同。利用决策树方法构造的分类模型就可能表示为树状结构或者分类规则,神经网络的分类模型则可表示为由单元和系数构成的网络模型,而贝叶斯分

16、类的模型则表现为数学公式。图21描述了分类的三个步骤。模型构造模型测试模型应用图21分类的三个步骤一个完整的分类过程一般包括模型构造,模型测试和模型应用这三步4。具体地说,数训练测试分类模型类别测试后的分类模型新数基于K近邻法的分类器的研究与实现第5页共35页每个步骤的功能如下1模型构造分析样本的类别和其具备的一些特征之间的依赖关系,并将这种关系用特定的模型表示出来。例如,分析以往的病历,根据病人的症状和诊断结果,得到疾病诊断模型。用来构造模型的数据集称为训练数据集或者训练样本集,即训练集。2模型测试检测模型的准确度,最终得到描述每个类别的分类模型。用来评价模型的数据集称为测试数据集或者测试样

17、本集,简称测试集。测试的过程是对测试数据依次检测,根据模型确定样本的类别,然后与实际类别相比较,如果相同,则称预测结果是正确的,否则说明预测结果是错误的。模型的准确度定义为测试集中结果正确的样本的比例。3模型应用利用得到的分类模型,预测在未知的情况下样本所属的类别。这个过程与模型评价基本相同,只是输入数据的类别是未知的。23近邻分类器的分类原理231近邻法分类规则近邻法是模式识别非参数法中最重要的方法之一,最初的近邻法是COVER和HART于1968年提出的,由于该方法在理论上进行了深入分析,直至现在仍是分类方法中最重要的方法之一5。直观的理解,所谓的K近邻,就是考察和待分类样本最相似的K个样

18、本,根据这K个样本的类别来判断待分类样本的类别值。在K近邻分类器中,一个重要的参数是K值的选择,K值选择过小,不能充分体现待分类样本的特点,而如果K值选择过大。则一些和待分类样本实际上并不相似的样本亦被包含近来,造成燥声增加而导致分类效果的降低。最近邻是将所有训练样本都作为代表点,因此在分类时需要计算待识别样本X到所有训练样本的距离,结果就是与X最近邻的训练样本所属于的类别。假定有C个类别W1,W2,WC的模式识别问题,每类有标明类被的样本NI个,I1,2,C。规定WI类的判别函数为GIXMIN|XXIK|,K1,2,NI。其中XIK的角标I表示WI类,K表示WI类NI个样本中的第K个。决策规

19、则可以写为若GJXMINGIX,I1,2,C,则决策XWJ。此分类示意图见图22所示。基于K近邻法的分类器的研究与实现第6页共35页ABABABAB图22近邻法分类图示232近邻法的一些处理方法在KNN算法里对于模型的选择,尤其是K值和距离的尺度,往往是通过对大量独立的测试数据,多个模型来验证最佳的选择。下面是一些被提及的处理KNN的方法K一般是事先确定,如10,也可以使用动态K值;使用固定的距离指标,这样只对小于该指标的案例进行统计。对于样本的维护,也并不是简单的增加新样本。也可以采取适当的办法来保证空间的大小,如符合某种条件的样本可以加入库里,同时可以对库里已有符合某种条件的样本进行删除等

20、。此外,为考虑提高性能,可以把所有的数据放在内存中,如MBR通常指保存在内存中的K近邻算法。K近邻算法是一种预测性的分类算法有监督学习。它实际并不需要产生额外的数据来描述规则,它的规则本身就是数据样本。KNN属于机器学习的基于样本的学习。它区别于归纳学习的主要特点是直接用已有的样本来解决问题,而不是通过规则推导来解决问题。它并不要求数据的一致性问题,即可以通过噪音,并且对样本的修改是局部的,不需要重新组织。K近邻算法综合与未知样本最近的K个近邻样本的类别来预测未知样本的类别,而在选择样本时根据一定的距离公式计算与未知样本的距离来确定是否被选择。其优点是方法简单,算法稳定。缺点是需要大量样本才能

21、保证数据的精度,此外,更主要的是它需要计算大量的样本间的距离,导致使用上的不便。对于每个新的样本都要遍历一次全体数据,KNN计算量要比BAYES和决策树大。对时间和空间的复杂性是必须考虑的。KNN常用在较少数据预测时使用6。基于K近邻法的分类器的研究与实现第7页共35页3K近邻法的研究与分析基于K近邻法的分类器的研究与实现第8页共35页。KNN(KNEARESTNEIGHBOR),代表K个最近邻分类法,通过K个最与之相近的历史记录的组合来辨别新的记录。KNN是一个众所周知的统计方法,在过去的40年里在模式识别中集中地被研究7。KNN在早期的研究策略中已被应用于文本分类,是基准REUTERS主体

22、的高操作性的方法之一。其它方法,如LLSF、决策树和神经网络等。K近邻算法的。31K近邻法的概念K近邻算法的思想如下首先,计算新样本与训练样本之间的距离,找到距离最近的K个邻居;然后,根据这些邻居所属的类别来判定新样本的类别,如果它们都属于同一个类别,那么新样本也属于这个类;否则,对每个后选类别进行评分,按照某种规则确定新样本的类别。取未知样本X的K个近邻,看着K个近邻多数属于哪一类,就把X分为哪一类。即,在X的K个样本中,找出X的K个近邻。K近邻算法从测试样本X开始生长,不断的扩大区域,直到包含进K个训练样本,并且把测试样本X的类别归为着最近的K个训练样本中出现频率最大的类别。例如,图31中

23、K6的情况,根据判定规则,测试样本X被归类为黑色类别。图31K近邻法近邻分类是基于眼球的懒散的学习法,即它存放所有的训练样本,并且知道新的样本需要分类时才建立分类。这与决策数和反向传播算法等形成鲜明对比,后者在接受待分类的新样本之前需要构造一个一般模型。懒散学习法在训练时比急切学习法快,但在分类时慢,因为所有的计算都推迟到那时。优点简单,应用范围广;可以通过SQL语句实现;模型不需要预先构造。基于K近邻法的分类器的研究与实现第9页共35页缺点需要大量的训练数据;搜索邻居样本的计算量大,占用大量的内存;距离函数的确定比较困难;分类的结果与参数有关。32K近邻法算法研究321K近邻法的数学模型用最

24、近邻方法进行预测的理由是基于假设近邻的对象具有类似的预测值。最近邻算法的基本思想是在多维空间RN中找到与未知样本最近邻的K个点,并根据这K个点的类别来判断未知样本的类。这K个点就是未知样本的K最近邻。算法假设所有的实例对应于N维空间中的点。一个实例的最近邻是根据标准欧氏距离定义,设X的特征向量为其中,ARX表示实例X的第R个属性值。两个实例XI和XJ间的距离定义为DXI,XJ,其中DXI,XJNR1ARXJ2ARXI在最近邻学习中,离散目标分类函数为FRNV其中V是有限集合V1,V2,VS,即各不同分类集。最近邻数K值的选取根据每类样本中的数目和分散程度进行的,对不同的应用可以选取不同的K值。

25、如果未知样本SI的周围的样本点的个数较少,那么该K个点所覆盖的区域将会很大,反之则小。因此最近邻算法易受噪声数据的影响,尤其是样本空间中的孤立点的影响。其根源在于基本的K最近邻算法中,待预测样本的K个最近邻样本的地位是平等的。在自然社会中,通常一个对象受其近邻的影响是不同的,通常是距离越近的对象对其影响越大8。322K近邻法研究方法该算法没有学习的过程,在分类时通过类别已知的样本对新样本的类别进行预测,因此属于基于实例的推理方法。如果取K等于1,待分样本的类别就是最近邻居的类别,称为NN算法。只要训练样本足够多,NN算法就能达到很好的分类效果。当训练样本数趋近于时,NN算法的分类误差最差是最优

26、贝叶斯误差的两倍;另外,当K趋近于时,KNN基于K近邻法的分类器的研究与实现第10页共35页算法的分类误差收敛于最优贝叶斯误差。下面对K近邻算法描述输入训练数据集DXI,YI,1IN,其中XI是第I个样本的条件属性,YI是类别,新样本X,距离函数D。输出X的类别Y。FORI1TONDO计算X和XI之间的距离DXI,X;ENDFOR对距离排序,得到DX,XI1DX,XI2DX,XIN;选择前K个样本SXI1,YI1XIK,YIK;统计S中每个类别出现的次数,确定X的类别Y。323K近邻法需要解决的问题1寻找适当的训练数据集训练数据集应该是对历史数据的一个很好的覆盖,这样才能保证最近邻有利于预测,

27、选择训练数据集的原则是使各类样本的数量大体一致,另外,选取的历史数据要有代表性。常用的方法是按照类别把历史数据分组,然后再每组中选取一些有代表性的样本组成训练集。这样既降低了训练集的大小,由保持了较高的准确度。2确定距离函数距离函数决定了哪些样本是待分类本的K个最近邻居,它的选取取决于实际的数据和决策问题。如果样本是空间中点,最常用的是欧几里德距离。其它常用的距离函是由绝对距离、平方差和标准差。3决定K的取值邻居的个数对分类的结果有一定的影响,一般先确定一个初始值,再进行调整,直到找到合适的值为止。4综合K个邻居的类别多数法是最简单的一种综合方法,从邻居中选择一个出现频率最高的类别作为最后的结

28、果,如果频率最高的类别不止一个,就选择最近邻居的类别。权重法是较复杂的一种方法,对K个最近邻居设置权重,距离越大,权重就越小。在统计类别时,计算每个类别的权重和,最大的那个就是新样本的类别9。基于K近邻法的分类器的研究与实现第11页共35页4K近邻法的分类器的设计与编程实现基于K近邻法的分类器的研究与实现第12页共35页41开发环境的选择本设计属于数据库程序,因此开发环境需要考虑数据库系统和开发语言两方面。411数据库系统的选择4111数据处理主流技术分析在数据处理领域关系型数据库RDB技术处于统治地位,它以关系数学、简单的关系模型为基础,以SQL为处理工具,得到了广泛的应用,其技术特征决定更

29、擅长结构化数据处理应用,近年来各厂商在关系型数据库基础上拓展功能,开始具有内容管理、多媒体等数据处理能力。典型的产品包括ORACLE、DB2、SQLSERVER、MYSQL等。而针对海量结构化数据处理,则还有如ESSBASE、COGNOS等多维数据库系统10。4112SQLSERVER有关本设计的重要特点1数据挖掘方面在数据挖掘应用中,SQLSERVER引进四个新的数据挖掘运算法,改进的工具和精灵,它们会使数据挖掘,对于任何规模的企业来说,都变得简单起来。2开发环境方面使用SQLSERVER,开发人员通过使用相似的语言,例如微软的VISUALCNET和微软的VISUALBASIC,将能够创立数

30、据库对象。开发人员还将能够建立两个新的对象用户定义的类和集合。3数据管理方面SQLSERVER是值得信赖的平台,系统固有的数据加密、默认安全设置以及强制口令策略功能能够以最高的性能、最高的可用性和最高的安全性运行任何苛刻的应用系统。412开发语言的选择MICROSOFTNET使编程工作变得更加容易,开发投资的回报率趋于最大化。MICROSOFTNET减少了程序员要写的代码量。另外,将显示特性与NET体验分开以便以后加入新的接口技术,比如语音或手写识别,而不必去重写程序。MICROSOFTNET开创了全新的商业模型,它使得一个公司可以用多种方法来把自己的技术商品化。MICROSOFTNET对“用

31、户界面友好”作了重新定义。终端用户能够享受一个智能化的、个性化的INTERNET,它能记住用户的个人设置,并在适当的时候,向用户使用的智能设备上发送适当的数据11。C是微软公司发布的一种面向对象的、运行于NETFRAMEWORK之上的高级程序设基于K近邻法的分类器的研究与实现第13页共35页计语言。C独有的特点1中间代码微软在用户选择何时MSIL应该编译成机器码的时候是留了很大的余地。微软公司很小心的声称MSIL不是解释性的,而是被编译成了机器码。2命名空间中的申明当你创建一个程序的时候,你在一个命名空间里创建了一个或多个类。同在这个命名空间里在类的外面你还有可能声明界面,枚举类型和结构体。必

32、须使用USING关键字来引用其他命名空间的内容。3基本的数据类型C拥有比C,C或者JAVA更广泛的数据类型。这些类型是BOOL,BYTE,UBYTE,SHORT,USHORT,INT,UINT,LONG,ULONG,FLOAT,DOUBLE和DECIMAL。象JAVA一样,所有这些类型都有一个固定的大小。又象C和C一样,每个数据类型都有有符号和无符号两种类型。与JAVA相同的是,一个字符变量包含的是一个16位的UNICODE字符。C新的数据类型是DECIMAL数据类型,对于货币数据,它能存放28位10进制数字。4两个基本类一个名叫OBJECT的类是所有其他类的基类。而一个名叫STRING的类也

33、象OBJECT一样是这个语言的一部分。作为语言的一部分存在意味着编译器有可能使用它无论何时你在程序中写入一句带引号的字符串,编译器会创建一个STRING对象来保存它。5参数传递方法可以被声明接受可变数目的参数。缺省的参数传递方法是对基本数据类型进行值传递。REF关键字可以用来强迫一个变量通过引用传递,这使得一个变量可以接受一个返回值。OUT关键字也能声明引用传递过程,与REF不同的地方是,它指明这个参数并不需要初始值。6与COM的集成C对WINDOWS程序最大的特点就是它与COM的无缝集成了,COM就是微软的WIN32组件技术。实际上,最终有可能在任何NET语言里编写COM客户和服务器端。C编

34、写的类可以子类化一个以存在的COM组件;生成的类也能被作为一个COM组件使用,然后又能使用。42程序设计与实现由前面的分析可知,需要对K近邻算法程序的实现和分类程序包括测试数据集的实现。基于K近邻法的分类器的研究与实现第14页共35页421界面设计在C集成开发环境中,使用窗体设计器、控件工具箱及属性窗口创建如图41所示的应用程序界面。图41程序界面各控件属性设置要求如下窗体中包含4个GROUPBOX控件,6个TEXTBOX控件,2个LISTBOX控件,3个BUTTON控件,8个LABEL控件,5个RADIOBUTTON控件和1个CHECKBOX控件。其中GROUPBOX控件、TEXTBOX控件

35、、LABEL控件和LISTBOX控件命名默认的,其余各控件的NAME属性值如表41所示。表41各控件的NAME属性值控件NAME属性值确定OK基于K近邻法的分类器的研究与实现第15页共35页下一条NEXT计算SOLVE数值的NUMERIC类型值CATEGORY正规化NORMALIZATION合计SUMMATION欧几里得EUCLIDEAN权重WEIGHTED422功能模块设计由于控件较多,就将关键控件的功能代码实现如下对于“确定”按钮,是将数据集中的某个属性列作为分类标号,其相关代码如下PRIVATEVOIDOK_CLICKOBJECTSENDER,SYSTEMEVENTARGSECLASS_

36、ATT_VALUESCLEARIFCLASS_NAMETEXT“MESSAGEBOXSHOW“请输入类别属性的名字“RETURNIFCLASS_VALUESTEXT“MESSAGEBOXSHOW“请输入类别属性的值“RETURNFORINTI0IN1INTNEW_RECINTPARSENEWRECORD_VALTEXTIFSTRJ1TOSTRING“INTITEMINTPARSESTRSUBSTRINGJ2IFNEW_RECITEMNEW_VAL2BREAKELSEINTITEMINTPARSESTRSUBSTRINGJ1IFNEW_RECITEMNEW_VAL2BREAKENDREGIONR

37、EGION基于K近邻法的分类器的研究与实现第27页共35页IFFLAGFORINTI0IMAXMAXMATHROUNDDOUBLEPARSEARRITOSTRING,4RETURNMAXPUBLICDOUBLEGET_MINARRAYLISTARRDOUBLEMINMATHROUNDDOUBLEPARSEARR0TOSTRING,4FORINTI1IARRCOUNTIIFMATHROUNDDOUBLEPARSEARRITOSTRING,4MINMINMATHROUNDDOUBLEPARSEARRITOSTRING,4RETURNMINPUBLICVOIDWEIGHTED_VOTINGTRYDO

38、UBLEKDOUBLEPARSEK_VALTEXTOBJECTELEMNULLDOUBLEWEIG0DOUBLESUM_WEIGHT0DOUBLEMAX_WEIGHT0DOUBLETEMP0ARRAYLISTCOUNT_CLASSNEWARRAYLISTFORINTS0SCLASS_ATT_VALUESCOUNTS基于K近邻法的分类器的研究与实现第35页共35页COUNT_CLASSADD0FORINTI0IKIFORINTJ0JCLASS_ATT_VALUESCOUNTJIFCLASS_ATT_VALUESJTOSTRINGTRIMARRANGED_CLASSITOSTRINGTRIMELE

39、MNEIGHBIFOREACHDICTIONARYENTRYDRINWEIGHTIFDRKEYTOSTRINGELEMTOSTRINGTRIMWEIGMATHROUNDDOUBLEPARSEDRVALUETOSTRING,4TEMPMATHROUNDDOUBLEPARSECOUNT_CLASSJTOSTRING,4MATHROUNDWEIG,4COUNT_CLASSJMATHROUNDTEMP,4BREAKMAX_WEIGHTGET_MAXCOUNT_CLASSFORINTI0ICOUNT_CLASSCOUNTISUM_WEIGHTMATHROUNDDOUBLEPARSECOUNT_CLASSITOSTRING,4DOUBLEMAX_PERCENTMATHROUNDMAX_WEIGHT/SUM_WEIGHT,4100INTMAX_INDEXCOUNT_CLASSINDEXOFMATHROUNDMAX_WEIGHT,4OUTPUT_LISTITEMSADDCLASS_ATT_VALUESMAX_INDEXTOSTRING“MAX_PERCENTTOSTRING“CATCHMESSAGEBOXSHOW“PLEASEENTERVALIDVALUEFORK“RETURN

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文资料库 > 毕业论文

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。