ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:68.11KB ,
资源ID:1155278      下载积分:2 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/1155278.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(K近邻分类的算法实现.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

K近邻分类的算法实现.docx

1、K近邻分类的算法实现K近邻分类的算法实现 近邻()法的输入为实例的特征向量,对应于特征空间的点;输入为实例的类别,可以取多类。近邻法假设给定一个训练数据集,其中的实例类别已定。分类时,对新的实例,根据其个最近邻的训练实例的类别,通过多数表决等方式进行预测。因此近邻不具有显式的学习过程。近邻法实际上是利用训练数据集对特征向量空间进行划分,并作为其分类的“模型”。1.1 选题背景 现如今,数据的爆炸式增长、广泛可用和巨大数量使得我们的时代成为真正的数据时代。急需功能强大和通用的工具,以便从这些海量数据中发现有价值的信息,把这些数据转化成有组织的知识。这种需求导致了数据挖掘的诞生。这个领域是年轻的、

2、动态变化的、生机勃勃的。数据挖掘已经并且将继续在我们从数据时代大步跨入信息时代的历程中作出贡献。 K近邻方法是20世纪50年代早期首次引进的。当给定大量数据集时,该方法是计算密集的,直到20世纪60年代计算能力大大增强之后才流行起来。此后它广泛用于模式识别领域。K近邻分类法是基于类比学习,即通过将给定的检验元组与它相似的训练元组进行比较来学习。训练元组用n个属性描述。每个元组代表n维空间的一个点。这样,所有的训练元组都存放在n维模式空间中。当给定一个未知元组时,k近邻分类法搜索模式空间,找出最接近元组的k个训练元组。这k个训练元组即为该元组的k个“最近邻”。1.2 研究现状国内外学者为此算法在

3、实际生活中更好地应用做出了许多努力。例如对k近邻方法的不足做出的一些改进如文献2,7,8,9,10等等。在其他领域的应用如文献5将K近邻算法改进为非线性分类算法,以达到分类动态心电图波形的目的。文献6在KNN算法的基础上提出了图像自动分类模型。在生物学上,近邻方法也得到了广泛地应用,有文献利用蛋白质相互作用网络,提出了一种基于K近邻的蛋白质功能的注释方法,该方法使得蛋白质的功能能够得到更有效的预测4。还有很多其他领域的一些应用,显示了机器学习在21世纪越来越重要的作用。本论文主要研究实现近邻分类算法,体会在如今大数据时代机器学习的意义,为今后进一步学习数据挖掘打下基础。 第二章 k近邻模型和算

4、法2.1 K近邻模型 K近邻法使用的模型实际上对应于对特征空间的划分。模型由三个基本要素-距离度量、k值得选择和分类规则决定。2.1.1 模型K近邻法中,当训练集、距离度量(如欧式距离)、k值及分类决策规则(如多数表决)确定后,对于任何一个新的输入实例,它所属的类唯一确定。这相当于根据上述要素将特征空间划分为一些子空间,确定子空间里的每个点所述的类。这一事实从最近邻算法中可以看得很清楚。特征空间中,对每个实例点,距离该点比其他店更近的所有点组成一个区域,叫做单元。每个训练实例点拥有一个单元,所有训练实例点的单元构成对特征空间的一个划分。最近邻法将实例的类作为其单元中所有点的类标记。这样,每个单

5、元的实例点的类别时确定的。下图是二维特征空间划分的一个例子。2.1.2 距离度量特征空间中两个实例点的距离是两个点相似程度的反映。K近邻模型的特征空间一般是n维实数向量空间Rn。使用的距离是欧式距离,但也可以是其他距离,如更一般的Lp或闽科夫斯基距离。设特征空间是n维实数向量空间, 的这里。当时,称为欧式距离,即当时,称为曼哈顿距离,即当时,它是各个距离坐标的最大值,即2.1.3 K值的选择 值的选择会对k近邻法的结果产生重大影响。 如果选择较小的k值,就相当于用较小的邻域中的训练实例进行预测,“学习”的近似误差会减小,只有与输入实例较近的(相似的)训练实例才会对预测结果起作用。但缺点是“学习

6、”的估计误差会增大,预测结果会对近邻的实例点非常敏感。如果近邻的实例点恰巧是噪声,预测就会出错。换句话说,k值得减小就意味着整体模型变得复杂,容易发生过拟合。如果选择较大的k值,就相当于用较大邻域中的训练实例进行预测。其优点是可以减少学习的估计误差。但缺点是学习的近似误差会增大。这时与输入实例较远的(不相似的)训练实例也会对预测起作用,是预测发生错误。K值得增大就意味着整体的模型变得简单。 如果k=N,那么无论输入实例是什么,都将简单的预测它属于在训练实例中最多的类。这时,模型过于简单,完全忽略训练实例中的大量有用信息,是不可取的。2.1.4 分类决策规则 K近邻法中的分类决策规则往往是多数表

7、决,即由输入实例的k个邻近的训练实例中的多数类决定输入实例的类。多数表决规则有如下解释:如果分类的损失函数为0-1损失函数,分类函数为那么误分类的概率是对给定的实例,其最近邻的k个训练实例点构成集合。如果涵盖的区域的类别是那么误分类概率是要使误分类概率最小即经验风险最小,就要使最大,所以多数表决规则等价于经验风险最小化。 2.2 K近邻算法输入:训练数据集其中,为实例的特征向量,为实例的类别,i=1,2,N;实例特征向量x;输出:实例x所属的类y。(1)根据给定的距离度量,在训练集T中找出与x最邻近的k个点,涵盖这k个点的x邻域记作;(2)在中根据分类决策规则(如多数表决)决定x的类别y:该式

8、中,I为指示函数,即当时I为1,否则I为0。当k取1的特殊情况时,k近邻算法即为最近邻算法。对于输入的实例点或是特征向量x,其分类由其最邻近的点的分类决定。第三章 数据模拟和实例分析3.1 数据模拟用MATLAB随机生成150组数据,类别为三类,编程如下# 程序1:A1=rand(50,2);hold onplot(A1(:,1),A1(:,2),.) A2=rand(50,2)+0.75;hold onplot(A2(:,1),A2(:,2),.)hold onA3=rand(50,2)+1.5;plot(A3(:,1),A3(:,2),.)得到如图所示图像图1 模拟数据在坐标系中的分布再用

9、k近邻分类算法对这150组数据进行分类,取k=15近邻,程序如下# 程序 2:clear allclcy=importdata(C:UsersadmDesktoptest.txt);p=y(:,2:3);p=p;Add=zeros(150,1);Add(1:50,:)=ones(50,1);Add(51:100,:)=2*ones(50,1);Add(101:150,:)=3*ones(50,1);figure(1),plot(y(:,1),Add,g.);hold ongrid on;count=0;for i=1:3 for j=1:50 for k=1:150 distance(k)=m

10、se(p(:,k)-p(:,(i-1)*50+j);%保存每个向量与所有训练样本之间的距离 end d1 index1=sort(distance);%对距离distance向量进行从小到大的排序 num=0 0 0; for m=1:20 % 考察num,存放的是排序后distance前20个属于每一类别的个数 if index1(m)=50 num(1)=num(1)+1; elseif index1(m)=100 num(2)=num(2)+1; else num(3)=num(3)+1; end end d2 class=max(num);%属于哪类的个数最多,就属于哪类,class

11、即就是该向量所属的类别 if i=class count=count+1; end A(i-1)*50+j)=class;%存放判断的结果 endendcountrate=count/150figure(2),plot(y(:,1),A,r.);grid on;%画图分类程序运行后得到count =143 rate =0.9533图一 模拟数据原始分类图2 K近邻方法得到的分类实验结果分析 从图像和运行结果均可以看出,对上述模拟数据用取k=15的k近邻算法作出的分类正确率为95.33%,分类效果不错,符合预期。改变k值,分别取k=1,5,10,15,20,30,40,60做测试,发现k取1的取

12、值对分类结果没有明显的规律,当k=1时,即为最近邻的特殊情况,此时分类和原分类吻合,当k从1开始逐渐增大时,分类效果呈现起伏,这说明k值得选取对分类结果有一定的影响,程序执行如下表。表2 Iris数据集分类效果K值正确率错误110596%4%1094.67%5.33%1595.33%4.67%2096.67%3.33%3096%4%4095.33%4.67%6094.67%5.33%3.2 实例分析 本文选取了著名的Iris数据集,Iris数据集共150组,有四个特征,分别是花萼和花瓣的长度和宽度,类别也是三类,取k=20,对前文程序代码稍作修改如下。# 程序 3:clear allclcy=

13、importdata(C:UsersadmDesktoptest.txt);p=y(:,2:5);p=p;Add=zeros(150,1);Add(1:50,:)=ones(50,1);Add(51:100,:)=2*ones(50,1);Add(101:150,:)=3*ones(50,1);figure(1),plot(y(:,1),Add,g.);hold ongrid on;count=0;for i=1:3 for j=1:50 for k=1:150 distance(k)=mse(p(:,k)-p(:,(i-1)*50+j);%保存每个向量与所有训练样本之间的距离 end d1

14、index1=sort(distance);%对距离distance向量进行从小到大的排序 num=0 0 0; for m=1:20 % 考察num, 存放的是排序后distance前20个属于每一类别的个数 if index1(m)=50 num(1)=num(1)+1; elseif index1(m)=100 num(2)=num(2)+1; else num(3)=num(3)+1; end end d2 class=max(num);% 属于哪类的个数最多,就属于哪类,class 即就是该向量所属的类别 if i=class count=count+1; end A(i-1)*50

15、+j)=class;%存放判断的结果 endendcountrate=count/150figure(2),plot(y(:,1),A,r.);grid on;%画图分类程序执行后得到以下结果:count =147 rate =0.9800图3 原始数据的分类图像图4 K近邻分类算法所得到的分类图像实验结果分析 上述程序运行后的结果表明k取20时对Iris数据集具有较好的分类效果,从某种意义上说,k近邻算法对花的分类可以给出一定的借鉴意义。改变k值后,分别取k=4,6,8,10,12,14,16,18,20,22,24,30时,发现对于Iris数据集k取8-22之间的值最为合适,分类正确率稳定,当k小于8

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1