您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 模式识别——用身高和或体重数据进行性别分类
1用身高和/或体重数据进行性别分类1、【实验目的】(1)掌握最小错误率Bayes分类器的决策规则(2)掌握Parzen窗法(3)掌握Fisher线性判别方法(4)熟练运用matlab的相关知识。2、【实验原理】(1)、最小错误率Bayes分类器的决策规则如果在特征空间中观察到某一个(随机)向量x=(x1,x2,…,xd)T,已知类别状态的先验概率为:()iPw和类别的条件概率密度为(|)1,2,3...iPxwic,根据Bayes公式得到状态的后验概率有:1(|)()(|)(|)()iiicjjjpPPpPxxx基本决策规则:如果1,...,(|)max(|)ijjcPPxx,则ix,将x归属后验概率最大的类别。(2)、掌握Parzen窗法对于被估计点X:其估计概率密度的基本公式(x)NkNNNpV,设区域RN是以hN为棱长的d维超立方体,则立方体的体积为dNNVh;选择一个窗函数(u),落入该立方体的样本数为xx1()iNNNhik,点x的概率密度:xx111(x)()NiNNkNNNVhiNpVN其中核函数:xx1iK(x,x)()iNNVh,满足的条件:i(1)K(x,x)0;i(2)K(x,x)dx1。(3)、Fisher线性判别方法Fisher线性判别分析的基本思想:通过寻找一个投影方向(线性变换,线性组合),将2高维问题降低到一维问题来解决,并且要求变换后的一维数据具有如下性质:同类样本尽可能聚集在一起,不同类的样本尽可能地远。Fisher线性判别分析,就是通过给定的训练数据,确定投影方向W和阈值y0,即确定线性判别函数,然后根据这个线性判别函数,对测试数据进行测试,得到测试数据的类别。线性判别函数的一般形式可表示成0)(wXWXgT,其中dxxX1d21根据Fisher选择投影方向W的原则,即使原样本向量在该方向上的投影能兼顾类间分布尽可能分开,类内样本投影尽可能密集的要求,用以评价投影方向W的函数为:2221221~~)~~()(SSmmWJF)(211*mmSWW上面的公式是使用Fisher准则求最佳法线向量的解,该式比较重要。另外,该式这种形式的运算,我们称为线性变换,其中21mm式一个向量,1WS是WS的逆矩阵,如21mm是d维,WS和1WS都是d×d维,得到的*W也是一个d维的向量。向量*W就是使Fisher准则函数)(WJF达极大值的解,也就是按Fisher准则将d维X空间投影到一维Y空间的最佳投影方向,该向量*W的各分量值是对原d维特征向量求加权和的权值。以上讨论了线性判别函数加权向量W的确定方法,并讨论了使Fisher准则函数极大的d维向量0W的计算方法,但是判别函数中的另一项0W尚未确定,一般可采用以下几种方法确定0W如2~~210mmW或者mNNmNmNW~~~2122110或当1)(p与2)(p已知时可用2)(/)(ln2~~2121210NNppmmW当W0确定之后,则可按以下规则分类:32010XwXWXwXWTT3、【实验内容及要求】(1)、实验对象Datasetf1.TXT女生的身高、体重数据Datasetm1.TXT男生的身高、体重数据-----训练样本集Dataset1.txt328个同学的身高、体重、性别数据Dataset2.txt124个同学的身高、体重、性别数据-----测试样本集(2)基本要求:(1)用Datasetf1.TXT和Datasetm1.TXT的数据作为训练样本集,建立Bayes分类器,用测试样本数据对该分类器进行测试。调整特征、分类器等方面的一些因素,考察它们对分类器性能的影响,从而加深对所学内容的理解和感性认识。(试验直接设计线性分类器的方法,与基于概率密度估计的贝叶斯分离器进行比较)(2)试验非参数估计,体会与参数估计在适用情况、估计结果方面的异同。4、【实验结果与分析】(1)、Bayes分类器的实验结果与分析A、对于Dataset1.txt328个同学的身高、体重、性别数据的测试样本集:A1、当先验概率为:男0.5,女0.5时:4身高分类错误个数:15身高分类错误率为:12.10%体重分类错误个数:15体重分类错误率为:12.10%【实验结果:】5A2、当先验概率为:男0.75,女0.25时:身高分类错误个数:19身高分类错误率为:15.32%体重分类错误个数:14体重分类错误率为:11.29%B、对于Dataset2.txt124个同学的身高、体重、性别数据的测试样本集:B1、当先验概率为:男0.5,女0.5时:身高分类错误个数:16身高分类错误率为:12.90%体重分类错误个数:21体重分类错误率为:16.94%6【实验结果:】B2、当先验概率为:男0.75,女0.25时:身高分类错误个数:31身高分类错误率为:25.00%体重分类错误个数:35体重分类错误率为:28.23%7【结果分析:】Dataset1.txt样本数据集中,男女先验概率为(0.71vs0.29);Dataset2.txt样本数据集中,男女先验概率为(0.66vs0.34)。对比实验结果,可以发现身高的分类错误率都小于体重的分类错误率,样本集越大,各个特征对应的分类错误率就越小。假设先验概率为(0.5vs0.5)的分类错误率小于假设先验概率为(0.75vs0.25)的分类集,就算假设的先验概率与实际的很相近,可是结果不准确。程序框图8导入样本数据计算二维正态分布参数求类条件概率密度计算先验概率和后验概率构成分类器测试训练样本结果判断满意不满意调整参数Bayes分类器源程序实验代码:clearall;loaddatasetf1.txt;loaddatasetm1.txt;%样本的分析figure;fori=1:250if(i79)plot(datasetf1(i,2),datasetf1(i,1),'r+');endplot(datasetm1(i,2),datasetm1(i,1),'k*');holdon;endtitle('样本数据');xlabel('体重(Kg)'),ylabel('身高(cm)');legend('男生','女生');9fid=fopen('dataset1.txt','r');test1=fscanf(fid,'%f%f%s',[3,inf]);test=test1';fclose(fid);Fmean=mean(datasetf1);Mmean=mean(datasetm1);Fvar=std(datasetf1);Mvar=std(datasetm1);preF=0.5;preM=0.5;error=0;Nerror=0;%身高的决策figure;fori=1:124PFheight=normpdf(test(i,1),Fmean(1,1),Fvar(1,1));PMheight=normpdf(test(i,1),Mmean(1,1),Mvar(1,1));pFemale=preF*PFheight;pMale=preM*PMheight;if(pFemalepMale)plot(i,test(i,1),'k*');if(test(i,3)=='f')Nerror=Nerror+1;endelseplot(i,test(i,1),'r+');if(test(i,3)=='M')Nerror=Nerror+1;endendholdon;end;error=Nerror/124*100;title('身高最小错误率Bayes分类');xlabel('测试序号'),ylabel('身高(cm)');sprintf('%s%d%s%0.2f%s','身高分类错误个数:',Nerror,'身高分类错误率为:',error,'%')%体重决策figure;error=0;Nerror=0;forj=1:124PFweight=normpdf(test(j,2),Fmean(1,2),Fvar(1,2));PMweight=normpdf(test(j,2),Mmean(1,2),Mvar(1,2));10pwFemale=preF*PFweight;pwMale=preM*PMweight;if(pwFemalepwMale)plot(j,test(j,2),'k*');if(test(j,3)=='f')Nerror=Nerror+1;endelseplot(j,test(j,2),'r+');if(test(j,3)=='M')Nerror=Nerror+1;endendholdon;end;error=Nerror/124*100;title('体重最小错误率Bayes分类');xlabel('测试序号'),ylabel('体重(kg)');sprintf('%s%d%s%0.2f%s','体重分类错误个数:',Nerror,'体重分类错误率为:',error,'%')(2)、Parzen窗法的实验结果与分析(先验概率为0.5vs0.5)A、对于Dataset1.txt中有78个女生和250个男生,共328个同学的身高、体重、性别数据的测试样本集的结果:女生人数为:84;男生人数为:244;拒分人数:0;女生错分人数:4;男生错分人数:33;总的错分人数:37;女生分类错误率:0.0800;男生分类错误率:0.1320;总的分类错误率:0.1128;B、对于Dataset2.txt中有40个女生和84个男生,共124个同学的身高、体重、性别数据的测试样本集:女生人数为:41;男生人数为:83;拒分人数:0;女生错分人数:15;男生错分人数:6;总的错分人数:21;女生分类错误率:0.3000;男生分类错误率:0.0240;总的分类错误率:0.1694;结果分析:Parzen窗法的分类结果比较准确,样本集越大,错误率就越小。Parzen窗法的源程序代码:clc;clearall;[FHFW]=textread('datasetf1.txt','%f%f');[MHMW]=textread('datasetm1.txt','%f%f');FA=[FHFW];MA=[MHMW];N1=max(size(FA));h1=7;11hn1=h1/(sqrt(N1));VN1=hn1^2;N2=max(size(MA));h2=7;hn2=h2/(sqrt(N2));VN2=hn2^2;[tHtW]=textread('dataset1.txt','%f%f%*s');X=[tHtW];[MN]=size(X);s=zeros(M,1);error=0;errorgirl=0;errorboy=0;errorrate=0;errorgirlrate=0;errorboyrate=0;girl=0;boy=0;bad=0;fork=1:MA=[X(k,1)X(k,2)];x=A;p=0.5;%p为属于女生的先验概率,则1-p为男生的先验概率pp=0;fori=1:N1fa=[FA(i,1)FA(i,2)];n=1/sqrt(2*pi)*exp(-0.5*abs((x-fa)*(x-fa)')/(hn1^2));pp=pp+n;endp1=1/VN1*pp';y1=1/N1*p1;%是女生的条件概率密度函数qq=0;forj=1:N2ma=[MA(j,1)MA(j,2)];m=1/sqrt(2*pi)*exp(-0.5*abs((x-ma)*(x-ma)')/(hn2^2));qq=m+qq;endq1=sum(1/VN2*qq');y2=1/N2*q1;%男生的概率密度函数,即其条件概率g=p*y1-(1-p)*y2;%g为判别函数ifg0ifk=5012s(k,1)=0;%判为女生girl=girl+1;elsee
本文标题:模式识别——用身高和或体重数据进行性别分类
链接地址:https://www.777doc.com/doc-7874247 .html