模式识别实习报告.docx
模式识别实习报告班级:09012姓名:毋一舟学号:2009302590247一.实习目的用Bayes分类算法将待定样本进行分类,按照协方差相等和不等进行分类。并画出分界线。1.在下列条件下,求待定样本x=(2,0)T的类别,画出分界线,编程上机。1)、二类协方差相等,2)、二类协方差不等。训练样本号k123123特征Xi112-1-1特征X210-110-1类别22.有训练集资料矩阵如下表所示,现已知,N=9、Ni=Nz=N3=3>n=2>M=3,试问,X=(-2,2)应属于哪一类?(要求:用两种解法a、三类协方差不等;b、三类协方差相等。)训练样本号k123123123特征Xi021-1-2-2OOl特征X2OlO10-1-2-1-2类别313233二.实习原理通过训练样本特征及其特征值,若类的条件概率密度用正态来表示,则判别函数既O)=nPxi)P(i)II_|一(2函2"一叫"卬I1=1"3)%EeXP一胪一禺):(X一禹)J+lnP(卬=-(-i/-'(-,)-in2-ln,+ln决策面方程为:Si(X)gj(X)=一;(x也y,(x-也)x-ry-7-J÷ilfc4+lnl=OI产J)乙八”2z.P(j)在各类先验概率不相等的情况下:(1)若3=相等,即各类协方差相等:决策规则:gi(x)=Wirx÷w/0=max(Wrx+wy0>xi对于二类情况g(尤)=g2(x)一8(x)=g-I)ZTX+Vl(z1a一;2)<仙尸)nx助2人产282,PM)g决策界面:若例与叼相邻.M(x)-g(%)=0(2)为任意,各类协方差矩阵不等,二次项与j有关。所以判别函数为二次型函数。判别函数:gj(x)=/W,x+WyX+吗0,其中Wi=-一Z丁,(x矩阵)*N丁四(维列向量),叱0=-;/k%-;MlJ+MPQ)通过判别函数正负来判断待定样本的类别。三.编程实现本程序可以实现任意个数的类别,任意个特征以及任意样本个数的训练样本进行协方差相等,或者不等的分类。对于问题一:表格1训练样本号kI23I23特征与II2-I-I-2特征%2I0-II0-I类别312待定样本为:2,0结果:请输入1类的两种所有特征值:×(1H1 - 1 ×1H21 » 1 ×(1H3 2 ×(1(4) - 1 ×(1HS - 0 ×(1M6 -1二类协方差不等的情况下,程序运行截图如下:XH*RXH效数:2徉洋 >22vv 骸的的 -tls 1 2 UT 征 £ 土/土土:请输入2类的两种所有特征值:×2(1J二-1×E22-1×23-2×241×(2H5=0×(2K6-1清缩人雷判别的样本:20先验概率为:pl=0.5p21=0.5Pressanykeytocontinue¾I:日【:、O-O-叵I。rrO-O-/待定样本10r rr协方差不相等的分界图x1入值A刖正:斗z,w-正像蒋第募忠特1.-f由图可见:判别式计算结果为64,小于零,属于第一类。分界线方程为:Xl=0;x2=8/3;用matlab编程画图结果如下:5432¾10-1若计算二类协方差相等,则图1最后一行输入Y,得结果如下:-1-1-210-1均值矩阵为:1.333330-1.333330协方差矩阵为:0.666667002协方差行列式为:1.33333协方差的逆矩阵为:1.5000.5先验概率为:pll-0.5p21=0.52.772590Pressanykeytocontinue由上图可知:判别式结果为-8,小于零,属于第一类。用matlab编程画图如下:图1协方差相等的分界图Ill叵1'OOrrrIllO待定样本.O<rrr第二题:待判定样本为:-2,2表格2训练样本号k123123123特征021-1-2-2001特征必01010-1-2-1-2类别口16)23三类协方差不等的情况下,程序运行截图如下:'C:Usersu骐rDesktopffk-DebuQ0R业一,ex<?.模式诩IJ类别数2/3:3啦E数:2类别1的M类别2的可 类别3的请输入1类的两种所有特征值:×(11-6×(12-2×(1H3-1×4=0×15J=1XtlJ【6=。请输入2类的两种所有特征值:×211-1×(22)-2×2H3-2×2K41×251=0×(2J61=-1诺输入3类的两种所有特征值:×(31-0×(32-0×C3H3-1×34=-2×351=-1×3K6J=-2运行结果如下:依op 作业一Debug 作业一.exe'TI均值矩阵W:10.333333-1.6666700.333333-1.666679方连矩阵为:隼1个10.50.50.333333第2个0.3333330.S0.51第3个 .333333-0.166667-0.1666670.333333接上图:第3个0.333333-8.166667-0.1666679.333333出砥I行列式为:第1 个为:3.0833333 塞2个为0833333 第3个为:。.0833333 '一弱逆矩阵为:先验概率为:p(l1=0.333333p2J>0.333333p3=0.333333判别式结果为:90-54.5228gl=-74.522892-32.5228判别函数为,91<x>-2*xl2*6*xl*x2-6*x2*x2*2*xl-2*x2-0.52g2<x>N-6*x1a2*6*×1*×2-2*x2a2-20*×1*10*×2-16.52g3<×>=-2<x12-2*x1*x2-2*×22-2*x1-6*×2-4.52属干第二类Pressanykeytocontinue由上图可知判别函数为:gl(x)=-2*xlA2+6*xl*x2-6*x2*x2+2*xl-2*x2-0.52g2(x)=-6*x12+6*x1*×2-2*x22-20*x1+10*×2-16.52g3(x)=-2*x12-2*×1*×2-2*x22-2*x1-6*x2-4.52属于第二类用matlab编程得三类分界线如下图:图2协方差相等时情形一一样,依旧把图9最后改成Y,篇幅原因不再附图。得判别函数为:gl(x)=0.6666666*×l-0.1333333*×2-0.16727;g2(x)=-1.3333333*xl+O.6666666*×2-O.96727;g3(x)=0.9333333*xl-1.4666666*x2-1.23394.属于第二类用matlab画出分界线图得:图3附录voidresult_2(float*constdeterm,float*constx_p,double*constxp,double*constxs_ni)两类别的情况(charsure_;doublep3=0;cout«,先验概率为:"«endl;for(inti=O;i<M;i+)pi=double(Ni)nn;cout«"p"«i+1«"="«pi<<endl;)cout«endl;floatal,a2;al=log(determ0determl);a2=og(p0pl);cout«al«,t"«a2«endl;if(sure='N,)float×12=0;floatx22=0;floatml,m2;xlO=x_pO-xpO;xll=x_pl-xpl;×20=x_pO-xp2;x2l=x_pl-xp3;ml=(xl0*xs_ni0+xll*xs_ni2)*xl0+(xl0*xs_nil+xll*xs_ni3)*xll;m2=(x20*xs_ni4+x2l*xs_ni6)*x20+(x20*xs_ni5+x2l*xs_ni7)*x2l;doubleg=O;结果g=1./2*ml-1./2*m2+1./2*al-a2;if(g>0)sure_=,Y,;elsesure_='N,;cout«endl«”判别式结果为:“«g<<endl;if(sure_=,Y,)cout«”属于第二类"«endl«endl;elsecout«”属于第一类“«endl«endl;)elsefloata32zm3,m4zm5;a30=×p2-×p0;a3l=×p3-xpl;m3=(a30*xs_ni0+a3l*xs_ni2)*x_p0+(a30*xs_nil+a3l*xs_ni3)*x_pl;m4=(xp0*xs_ni0+xpl*xs_ni2)*xp0+(xp0*xs_nil+xpl*xs_ni3)*xpl;m5=(xp2*xs_ni0+xp3*xs_ni2)*xp2+(xp2*xs_nil+xp3*xs_ni3)*xp3;doubleg=0;结果g=m3+I.2*(m4-m5)-a2;if(g>0)SUre_=Y;elsesure_='N,;cout«endl«"判别式结果为:"«g<<endl;if(sure_=,Y,)cout«”属于第二类“«endl«endl;elsecout«”属于第一类“«endl«endl;)voidresult_3(float*constdeterm,float*constx_p,double*constxp,double*constxs_ni)三类别情况(charsure_;doublep3=0;cout«”先验概率为: