模式识别大作业(共11页)_第1页
模式识别大作业(共11页)_第2页
模式识别大作业(共11页)_第3页
模式识别大作业(共11页)_第4页
模式识别大作业(共11页)_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、模式识别(m sh sh bi)大作业 班 级 学 号姓 名一.问题(wnt)重述 利用(lyng)Fisher线性判别(pnbi)法和最近邻算法对sonar数据进行分类,并得出正确率。类别数维数样本个数sonar260mine:111rock:97二.Fisher线性判别法思路用训练样本求出d维空间到一维空间的投影方向w,进而求出样本均值,进而可求出阈值T,带入测试样本得到投影点y,将y与T相比,即可进行分类判别。2.1 Fisher准则函数中的基本参量 在d维X空间 (1)各类样本的均值向量 =(2)样本类内离散度矩阵和总样本类内离散度矩阵 其中是对称半正定矩阵,而且当时通常是非奇异的。(

2、3)样本类间离散度矩阵 是对称半正定(zhn dn)矩阵。在一维Y空间(kngjin)(1)各类样本(yngbn)的均值(2)样本类内离散度和总样本类内离散度 我们希望投影后,在一维Y空间中各类样本尽可能分得开些,即希望两类均值之差越大越好,同时希望各类样本内部尽量密集,即希望类内离散度越小越好。2.2 Fisher准则函数及最佳变换向量的求取其中,是两类均值之差,是样本类内离散度。应寻找使尽可能大的作为投影方向。2.3 阈值的选用三.最近(zujn)邻算法思路 在训练样本(yngbn)中找到测试样本的最近邻,然后根据这个最近邻样本的类别来决定测试样本的类别。最近邻算法所选择的邻居都是已经正确

3、分类的对象。 若写成判别函数的形式(xngsh),类的判别函数可以写作,则四.Fisher线性判别法代码mine_max=111; rock_max=97;d=60;load (mines.mat); %导入mine数据load (rocks.mat); %导入rock数据amine=rand(mine_max,1);m=0;for i=1:mine_max if amine(i,1)=0.5 amine(i,1)=1; m=m+1; %记录结果大于或等于0.5的个数(mine) else amine(i,1)=0; endendarock=rand(rock_max,1);s=0;for i

4、=1:rock_max if arock(i,1)=0.5 arock(i,1)=1; s=s+1; %记录结果大于或等于0.5的个数(rock) else arock(i,1)=0; endendbmine=zeros(m,1);cmine=zeros(mine_max-m,1);j=0;t=0;for i=1:mine_max if amine(i,1)=1; j=j+1; bmine(j,1)=i; %mine中下标为1的放在一个(y )向量中 else t=t+1; cmine(t,1)=i; %mine中下标(xi bio)为0的放在一个向量中 endendbrock=zeros(s

5、,1);crock=zeros(rock_max-s,1);j=0;t=0;for i=1:rock_max if arock(i,1)=1; j=j+1; brock(j,1)=i; %rock中下标(xi bio)为1的放在一个向量中 else t=t+1; crock(t,1)=i; %rock中下标为0的放在一个向量中 endenddmine=zeros(1,60);for i=1:60 for j=1:m dmine(1,i)=dmine(1,i)+outmine(bmine(j,1),i); endendmm=dmine/m; %求解mine的类均值向量drock=zeros(1,

6、60);for i=1:60 for j=1:s drock(1,i)=drock(1,i)+outrock(brock(j,1),i); endendmr=drock/s; %求解rock的类均值向量mm=mm;mr=mr;s_mine=zeros(d,d);s_rock=zeros(d,d);for i=1:m s_mine=s_mine+(outmine(bmine(i,1),:)-mm)*(outmine(bmine(i,1),:)-mm);end %求解(qi ji)mine的类内离散度矩阵for i=1:s s_rock=s_rock+(outrock(brock(i,1),:)-

7、mr)*(outrock(brock(i,1),:)-mr);end %求解(qi ji)rock的类内离散度矩阵sw=s_mine+s_rock;w_direction=sw(-1)*(mm-mr);w0=w_direction*(mm+mr)/2;x=-1:2;y=-1:2;hold on;plot(x,y);y=w0;plot(y,y,xk); %阈值(y zh)坐标text(0.6,0.5,w);text(-0.4,0,rock);text(0.4,0.2,mine);title(Fisher);xlabel(mine);ylabel(rock);emine=0;erock=0;for

8、 i=1:mine_max-m y=w_direction*outmine(cmine(i,1),:); if yw0 plot(y,y,og); %正确分类的mine样本的坐标 else plot(y,y,+m); emine=emine+1; %错误分类的mine样本的个数 endendfor i=1:rock_max-s y=w_direction*outrock(crock(i,1),:); if yw0 plot(y,y,oc); %正确分类的rock样本的坐标 else plot(y,y,+r); erock=erock+1; %错误分类的rock样本的个数 endendtext(

9、-0.2,0.63,errmine: num2str(emine*100/(111-m) %);text(-0.2,-0.43,errrock: num2str(emine*100/(97-s) %);最近邻算法代码load Mine.txt; %导入mine数据load Rock.txt; %导入rock数据(shj)Max=10; for i=1:Max %用于计数(j sh),进行十次试验 %从Mine中选出55个随机数 out_1 = round(randperm(111); data_1=out_1(1:55); Mine_1= Mine(data_1,1:60); %从Rock中选

10、出48个随机数 out_2 = round(randperm(97); data_2=out_2(1:48); Rock_1 = Rock(data_2,1:60); %Mine中测试(csh)样本 m=1;n=1; for i=1:111 if find(data_1=i) %Mine中训练样本 Mine_1(m,:)=Mine(i,:); m=m+1; else Mine_2(n,:)=Mine(i,:); %Mine中测试样本 n=n+1; end end %Rock中测试样本 m=1;n=1; for i=1:97 if find(data_2=i) %Rock中训练样本 Rock_1

11、(m,:)=Rock(i,:); m=m+1; else Rock_2(n,:)=Rock(i,:); %Rock中测试样本 n=n+1; end end %求Mine_2中各测试样本到训练样本Mine_1和Rock_1的欧氏距离 for i=1:56 a1=Mine_2(i,:); b1=Mine_2(i,:); for j=1:55 c11=Mine_1(j,:); d1_1(i,j)=norm(a1-c11); end %Mine_2中的测试样本到Mine_1中训练样本的距离矩阵 for j=1:48 c12=Rock_1(j,:); d1_2(i,j)=norm(b1-c12); en

12、d %Mine_2中的测试样本到Rock_1中训练样本的距离(jl)矩阵 end for i=1:56 d11(i,1)=min(d1_1(i,:); end %取距离(jl)待测点最近的点作为判别点 for i=1:56 d12(i,1)=min(d1_2(i,:); end %取距离(jl)待测点最近的点作为判别点 e1=d11-d12; h1=find(e1=0); s2=numel(h2); %正确分类的Rock_2中的元素个数 r=(s1+s2)/105; end 六.MATLAB运行截图1.将数据导入MATLAB中,并整理2.一维空间投影(tuyng)方向w的确定(qudng)3.

13、对测试样本(yngbn)进行分类,得到分类结果及正确率 下图为第一次Fisher的结果:mine的正确率约为73.68%,rock的正确率约为71.70% 下图为第一次最近邻算法(sun f)的结果:mine的正确率约为89.27%,rock的正确率约为71.43%最近邻算法运行次数正确率(%)minerock189.2771.43280.3677.55382.6773.47488.6872.63582.1475.51678.5769.39787.585.71882.1376.24979.571.041086.7585.32平均正确率83.7675.86Fisher线性判别法运行次数正确率(%

14、)minerock173.6871.7268.5460.12365.0560.28468.5161.33572.8769.3966460.06776.3873.1867.7561.69970.6465.721066.5760.28平均正确率69.464.37七.心得体会 Fisher线性判别法在一些情况下,并不比最近(zujn)邻算法更优。因为(yn wi)就上述结果而言,最近(zujn)邻算法还是有自己的正确率优势,但是二者平均正确率都不是很高。对于Fisher线性判别法来说,可能需要重新选择阈值。进而说明,有时候维数也是衡量和分类数据的重要依据。将过多的维数一下转成一维形式,会将很多数据误判分类。这次大作业的最大收获就是加深了对Fisher线性判别法的认识和最近邻算法的使用,对MATLAB的知识也学习了不少。在完成作业的过程中,查阅了很多书籍和网上资料,深感掌握MATLAB的能力是多么重要。而早已习惯用简单方法整理数据

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论