- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Fisher分类算法
实验二 用身高和/或体重数据进行性别分类的实验一、实验目的 1) 加深对Fisher线性判别方法原理的理解和认识 2) 掌握Fisher线性判别方法的设计方法 二、实验数据训练样本集FAMALE.TXT 50个女生的身高、体重数据MALE.TXT 50个男生的身高、体重数据测试样本集test1.txt 35个同学的身高、体重、性别数据(15个女生、20个男生)test2.txt 300个同学的身高、体重、性别数据(50个女生、250个男生)三、实验内容试验直接设计线性分类器的方法,与基于概率密度估计的贝叶斯分类器进行比较。同时采用身高和体重数据作为特征,用Fisher线性判别方法求分类器,将该分类器应用到训练和测试样本,考察训练和测试错误情况。将训练样本和求得的决策边界画到图上,同时把以往用Bayes方法求得的分类器(例如: 最小错误率Bayes分类器)也画到图上,比较结果的异同。四、原理简述、程序流程图1、Fisher线性判别方法首先求各类样本均值向量,然后求各个样本的来内离散度矩阵,再求出样本的总类内离散度,根据公式求出把X投影到Y的最好的投影方向。再求出一维Y空间中各类样本均值,其中,本次实验的分界阈值我们用如下方法得到:,最后,将测试样本中的值代入,求出y,并将其与y0来进行比较来分类。2、流程图五、实验结果1、错误率表格男生错误个数女生错误个数总错误男生错误率女生错误率总错误率2722910.8%4%9.67%841216%8%12%分析:用训练样本得到的分类器测试测试样本时错误率低,测试结果较好,但测试训练样本时,其错误率较高,测试结果不好。2、Fisher判别方法图像分析:从图中我们可以直观的看出对训练样本Fisher判别比最大似然Bayes判别效果更好。六、总结与分析本次实验使我们对加深Fisher判别法的理解。通过两种分类方法的比较,我们对于同一种可以有很多不同的分类方法,各个分类方法各有优劣,所以我们更应该熟知这些已经得到充分证明的方法,在这些方法的基础上通过自己的理解,创造出更好的分类方法。所以模式识别还有很多更优秀的算法等着我们去学习。七、附录1. fisher.mfunction [w,y0]=fisher(AA,BB)A=AA;B=BB;[k1,l1]=size(A);[k2,l2]=size(B);M1=sum(AA);M1=M1;M1=M1/l1;%男生均值向量M2=sum(BB);M2=M2;M2=M2/l2;%女生均值向量S1=zeros(k1,k1);%建立矩阵S2=zeros(k2,k2);for i=1:l1 S1=S1+(A(:,i)-M1)*((A(:,i)-M1).);%男生的类内离散度矩阵endfor i=1:l2 S2=S2+(B(:,i)-M2)*((B(:,i)-M2).);%女生的类内离散度矩阵endSw=0.5*S1+0.5*S2;%总类内离散度矩阵,先验概率0.5w=inv(Sw)*(M1-M2);%两列wT=w;%wT就是使Fisher准则函数JF(w)取极大值时的解,也就是d维X空间到1维Y空间的最好的投影方向for i=1:l1 Y1(i)=wT(1,1)*A(1,i)+wT(1,2)*A(2,i);%求出二维男生样本集映射到一维时的量endfor i=1:l2 Y2(i)=wT(1,1)*B(1,i)+wT(1,2)*B(2,i);%求出二维女生样本集映射到一维时的量endm1=sum(Y1)/l1;m2=sum(Y2)/l2;y0=(l1*m1+l2*m2)/(l1+l2);2. determine.m%用fisher线性判别函数来判断clcclear all[A1 A2] = textscan(MALE.txt,%f%f);[B1 B2] = textscan(FEMALE.txt,%f%f);AA = [A1 A2];BB = [B1 B2];[w,y0] = fisher(AA,BB);wT = w;girl = 0;boy = 0;bad = 0;errorgirl = 0;errorboy = 0;error = 0;errorgirlrate = 0;errorboyrate = 0; errorrate = 0;[T1 T2] = textscan(test2.txt,%f%f%*s);TT = [T1 T2];T = TT;[k3 l3] = size(T);for k = 1:50 y(k) = wT*T(:,k); if y(k)y0 errorgirl = errorgirl+1; else if y(k)y0 girl = girl+1; else bad = bad+1; end endendfor k = 51:
原创力文档


文档评论(0)