好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

模式识别最近邻和fisher分类matlab实验报告.pdf

10页
  • 卖家[上传人]:第***
  • 文档编号:57519178
  • 上传时间:2018-10-22
  • 文档格式:PDF
  • 文档大小:243.55KB
  • / 10 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 一、Fisher 线性判别Fisher 线性判别是统计模式识别的基本方法之一它简单,容易实现,且计算量和存储量小,是实际应用中最常用的方法之一Fisher 判别法 Fisher 在 1936 年发表的论文中首次提出的线性判别法Fisher 判别法的基本思想是寻找一个最好的投影,当特征向量 x 从 d 维空间映射到这个方向时,两类能最好的分开这个方法实际上涉及到特征维数的压缩问题一维空间的 Fisher 线性判别函数为:2 1212()( )FmmJwSS(1)im=xN1,i=1,2(2)2 , 1,)( )(imxmxST i xiii(3)其中,1m和2m是两个样本的均值,1S,2S分别为各类样本的的类内离散度投影方向w为: )(211mmSww(4)12wSSS(5)在 Fisher 判决函数中,分子反应了映射后两类中心的距离平方,该值越大,类间可分性越好; 分母反应了两类的类内的离散度, 其值越小越好; 从总体上讲,( )FJw的值越大越好,在这种可分性评价标准下,使( )FJw达到最大值的w即为最佳投影方向1.1、 Fisher 线性判别实验流程图分别取 25 组类别 1 和类别2的样本进行 训练通过式 2~5,计算得 到w和决策面阈值构成 fisher 判别函 数分别计算类 1 类 2 识别的准确率选取另外 25 组类别 1 和类别 2 的样本进 行测试是否大于阈值?类别 1 的个数加 1类别 2 的个数加 2YN1.2 Fisher 线性判别 mtalab 代码data=importdata('C:\Users\zzd\Desktop\data-ch5.mat');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];lth=zeros(50,50);sample_m1=mean(sample1);sample_m2=mean(sample2);m1=sample_m1';m2=sample_m2';sb=(m1-m2)*(m1-m2)';s1=zeros(2);for n=1:25temp = (sample1(n,:)'-m1)*(sample1(n,:)'-m1)';s1=s1+temp;end;s2=zeros(2);for n=1:25temp = (sample2(n,:)'-m2)*(sample2(n,:)'-m2)';s2 = s2+temp;end;sw=s1+s2;vw=inv(sw)*(m1-m2);a_m1 = vw'*m1;a_m2 = vw'*m2;w0 = (a_m1+a_m2)/2;for n=1:50if(vw'*test(n,:)' - w0>0)m1(n,:)=1;elsem1(n,:)=2;end;end;m1;count1=0;count2=0;for n=1:25if m1(n,:)==sp_l(n,:)count1=count1+1;elsenendif m1(n+25,:)==sp_l(25+n,:)count2=count2+1;elsen+25endendclass1_rate=count1/25class2_rate=count2/25plot(sample(1:25,1),sample(1:25,2),'r.');hold on ;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.');x1 = [-2:0.01:4];y1 = x1*vw(2)/vw(1);plot(x1,y1);1.3 Fisher 线性判别实验运行结果class1_rate =0.8000class2_rate =0.8400二、近邻法邻近法最初由 Court 和 Hart 于 1968 年提出的。

      它是一种理论上比较成熟的方法,也是一种简单、有效、非参数的机器学习算法之一,并且取得了较好的效果.其基本思想是在训练样本中找到测试样本的最近邻,然后根据这个最近邻样本的类别来决定测试样本的类别,如图 1 所示邻近法算法所选择的邻居都是已经正确分类的对象邻近法虽然从原理上也依赖于极限定理,但在类别决策时,只与最相邻的样本有关该算法在分类时的不足主要有:如果样本数目太少,样本的分布可能会带有很大的偶然性,不一定能很好地代表数据内的分布情况,此时就会影响最近邻法的性能该方法的另一个不足之处是计算量较大,因为对每一个待分类的文本都要计算它到全体已知样本的距离,才能求得它的最近邻点如果写成判别函数的形式,iw类的判别函数可以写作:1,.,( ),min( )kk icgxxig x则(6)决策规则为各类的判别函数比较大小,即1,.,( ),min( )kk icgxxig x则(7)2.1 邻近法分类流程图分别取 25 组类别 1 和类别2的样本作为 训练样本选取另外 25 组类别 1 和类别 2 的样本作 为测试样本计算出距每个测 试样本最近的训 练对象将测试样本的类别 判定为最近训练样 本的类别分别计算类 1 类 2 识别的准确率2.2 邻近法分类实验 matlab 代码data=importdata('C:\Users\zzd\Desktop\data-ch5.mat');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);for n=1:50for i=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;for k=1:25ifb(k)25c2=c2+1;elsek+25endendclass1_rate=c1/25class2_rate=c2/25figureplot(sample(1:25,1),sample(1:25,2),'r.');hold on ;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.');2.3 近邻法分类实验运行结果class1_rate =0.9600class2_rate =0.8800三、实验总结比较两类的分类结果可以得出: 用 fisher 线性判别分析方法得到的类 1 类 2 的识别率分别是 80%和 84%;而用近邻法得到的识别率分别为 96%和 88%。

      因此近邻法的识别率要高于 fisher 线性判别, 主要原因是这两种类型的点相对集中, 有一定的规律,但是线性不可分,存在交叠的情况在这个分类实验中近邻法有着较高的识别率,但是如果对样本数目少或规律比较复杂的样本,选择近邻法得到的结果可能会大打折扣因此要根据具体的应用场合来选择合适的分类方法。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.