您好,欢迎访问三七文档
实验三基于K最近邻法的IRIS分类实验目的:1.进一步了解K最近邻分类法的设计概念,能够根据自己的设计对线性分类器有更深刻地认识;2.理解最近邻分类的原理及其算法步骤,运用该方法对iris数据进行分类,熟悉其MATLAB编程。一、实验条件:1.PC微机一台和MATLAB软件。二、实验原理:KNN(kNearestNeighbors)算法又叫k最近邻方法。假设每一个类包含多个样本数据,而且每个数据都有一个唯一的类标记表示这些样本是属于哪一个分类,KNN就是计算每个样本数据到待分类数据的距离。如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。该方法在定类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。KNN方法虽然从原理上也依赖于极限定理,但在类别决策时,只与极少量的相邻样本有关。因此,采用这种方法可以较好地避免样本的不平衡问题。另外,由于KNN方法主要靠周围有限的邻近的样本,而不是靠判别类域的方法来确定所属类别的,因此对于类域的交叉或重叠较多的待分样本集来说,KNN方法较其他方法更为适合。该方法的不足之处是计算量较大,因为对每一个待分类的文本都要计算它到全体已知样本的距离,才能求得它的K个最近邻点。目前常用的解决方法是事先对已知样本点进行剪辑,事先去除对分类作用不大的样本。该算法比较适用于样本容量比较大的类域的自动分类,而那些样本容量较小的类域采用这种算法比较容易产生误分。K-最临近分类方法存放所有的训练样本,在接受待分类的新样本之前不需构造模型,并且直到新的(未标记的)样本需要分类时才建立分类。K-最临近分类基于类比学习,其训练样本由N维数值属性描述,每个样本代表N维空间的一个点。这样,所有训练样本都存放在N维模式空间中。给定一个未知样本,k-最临近分类法搜索模式空间,找出最接近未知样本的K个训练样本。这K个训练样本是未知样本的K个“近邻”。“临近性”又称为相异度(Dissimilarity),由欧几里德距离定义,其中两个点X(,...,21xxnx)和Y(,...,21yy„,ny)的欧几里德距离是:2222211)(...)()(),(nnyxyxyxyxD未知样本被分配到K个最临近者中最公共的类。在最简单的情况下,也就是当K=1时,未知样本被指定到模式空间中与之最临近的训练样本的类。模式识别实验2三、实验内容:算法步骤:step.1---初始化距离为最大值;step.2---计算未知样本和每个训练样本的距离dist;step.3---得到目前K个最临近样本中的最大距离maxdist;step.4---如果dist小于maxdist,则将该训练样本作为K-最近邻样本;step.5---重复步骤2、3、4,直到未知样本和所有训练样本的距离都算完;step.6---统计K-最近邻样本中每个类标号出现的次数;step.7---选择出现频率最大的类标号作为未知样本的类标号。四、实验程序及结果:(iris数据见附件)data=importdata('C:\Users\Administrator\Desktop\iris.data.txt');data1=data.data;data2=data.label;sample1=data1(1:25,:);sample2=data1(51:75,:);sample=[sample1sample2];sp_l=data2(26:75);test1=data1(26:50,:);test2=data1(76:100,:);test=[test1test2];%plot(test(:,1),test(:,2),'.');lth=zeros(50,50);forn=1:50fori=1:50lth(n,i)=((test(n,1)-sample(i,1))^2+(test(n,2)-sample(i,2))^2)^(1/2);endendlth=lth';[a,b]=min(lth);c1=0;c2=0;fork=1:25ifb(k)=25c1=c1+1;elsek;endifb(k+25)25模式识别实验3c2=c2+1;elsek+25;endendclass1_rate=c1/25class2_rate=c2/25figureplot(sample(1:25,1),sample(1:25,2),'r.');holdon;plot(test(1:25,1),test(1:25,2),'b.');plot(sample(26:50,1),sample(26:50,2),'m.');plot(test(26:50,1),test(26:50,2),'g.');运行结果如下图class1_rate=0.9600class2_rate=0.8800五、实验总结通过此次实验,了解了K最近邻分类法的设计概念及其原理和应用等方面的知识。刚开始看书的时候一头雾水,完全看不懂。后来在网上查找了一些资料才渐渐明白了一点。IRIS数据也是相当有代表性的一组数据,对其做的K-NN分类的精度也是高达96%和88%,算是比较合适的分类方法。2.19461.67301.63651.78442.01552.06812.12132.47971.51181.96921.83401.87042.29481.77142.39391.56481.93292.20272.45681.75231.69912.48831.72592.04662.02262.37571.79872.08282.07981.94492.38012.23732.16141.92352.2604];z1=[0.53380.85141.08310.41641.11760.55360.60710.44390.49280.59011.09271.07561.00720.42720.43530.98690.48411.09921.02990.71271.01240.45760.85441.12750.77050.41291.00850.76760.84180.87840.97510.78400.41581.03150.75330.9548];x2=[1.40101.23012.08141.16551.37401.18291.76321.97392.41522.58902.84721.95391.25001.28641.26142.00712.18311.79091.33221.14661.70871.59202.93531.46642.93131.83491.83402.50962.71982.31482.03532.60301.23272.14651.56732.9414];y2=[1.02980.96110.91541.49010.82000.93991.14051.06780.80501.28891.46011.43340.70911.29421.37440.93871.22661.18330.87980.55920.51500.99830.91200.71261.28331.10291.26800.71401.24461.33921.18080.55031.47081.14350.76791.1288];z2=[0.62101.36560.54980.67080.89321.43420.95080.73240.57841.49431.09150.76441.21591.30491.14080.93980.61970.66031.39281.40840.69090.84000.53811.37290.77310.73191.34390.81420.95860.73790.75480.73930.67390.86511.36991.1458];模式识别实验4
本文标题:最近邻法
链接地址:https://www.777doc.com/doc-4029962 .html