模式识别实验报告(共20页).doc
精选优质文档-倾情为你奉上实验一Bayes分类器设计本实验旨在让同学对模式识别有一个初步的理解,能够根据自己的设计对贝叶斯决策理论算法有一个深刻地认识,理解二类分类器的设计原理。1实验原理最小风险贝叶斯决策可按下列步骤进行:(1)在已知,i=1,,c及给出待识别的的情况下,根据贝叶斯公式计算出后验概率:j=1,,x (2)利用计算出的后验概率及决策表,按下面的公式计算出采取,i=1,,a的条件风险,i=1,2,a(3)对(2)中得到的a个条件风险值,i=1,,a进行比较,找出使其条件风险最小的决策,即则就是最小风险贝叶斯决策。2实验内容假定某个局部区域细胞识别中正常()和非正常()两类先验概率分别为正常状态:P()=0.9;异常状态:P()=0.1。现有一系列待观察的细胞,其观察值为:-3.9847 -3.5549 -1.2401 -0.9780 -0.7932 -2.8531 -2.7605 -3.7287 -3.5414 -2.2692 -3.4549 -3.0752 -3.9934 2.8792 -0.9780 0.7932 1.1882 3.0682-1.5799 -1.4885 -0.7431 -0.4221 -1.1186 4.2532 已知类条件概率密度曲线如下图:类条件概率分布正态分布分别为(-2,0.25)(2,4)试对观察的结果进行分类。3 实验要求1) 用matlab完成分类器的设计,要求程序相应语句有说明文字。2) 根据例子画出后验概率的分布曲线以及分类的结果示意图。3) 如果是最小风险贝叶斯决策,决策表如下:最小风险贝叶斯决策表:状态决策106210请重新设计程序,画出相应的后验概率的分布曲线和分类结果,并比较两个结果。最小错误率贝叶斯决策试验程序x=-3.9847,-3.5549,-1.2401,-0.9780,-0.7932, -2.8531,-2.7605,-3.7287,-3.5414 ,-2.2692,-3.4549,-3.0752,-3.9934,2.8792,. -0.9780,0.7932,1.1882 ,3.0682 ,-1.5799 ,-1.4885 ,-0.7431 ,-0.4221 ,-1.1186 ,4.2532 ;num=24; %输入的特征值个数result=zeros(1,num);%存放分类结果e1=-2; %正常细胞的特征均值a1=0.5; %正常细胞的特征标准差e2=2; %异常细胞的特征均值a2=2; %异常细胞的特征标准差pw1=0.9; %正常细胞出现的概率pw2=0.1; %异常细胞出现的概率for i=1:num pw1_x=normpdf(x(i),e1,a1)*pw1; %正常细胞后验概率的分子 pw2_x=normpdf(x(i),e2,a2)*pw2; %异常细胞后验概率的分子 if pw1_x>pw2_x result(i)=1; %识别结果为正常细胞 endenda=-5:0.05:5;n=numel(a);pw1_plot=zeros(1,n);pw2_plot=zeros(1,n);for j=1:n pw1_plot(j)=(pw1*normpdf(a(j),e1,a1)/(pw1*normpdf(a(j),e1,a1)+pw2*normpdf(a(j),e2,a2);%正常细胞后验概率 pw2_plot(j)=(pw2*normpdf(a(j),e2,a2)/(pw1*normpdf(a(j),e1,a1)+pw2*normpdf(a(j),e2,a2);%异常细胞后验概率endfigure(1);hold on;plot(a,pw1_plot,'k-',a,pw2_plot,'r-.');for k=1:num if result(k)=1 plot(x(k),-0.1,'b*');%正常细胞分布 else plot(x(k),-0.1,'rp');%异常细胞分布 endendlegend('正常细胞后验概率曲线','异常细胞后验概率曲线','正常细胞','异常细胞');xlabel('样品细胞特征值');ylabel('后验概率');title('后验概率分布曲线');grid on;实验结果带·的曲线为判决成异常细胞的后验概率曲线;另一条平滑的曲线为判为正常细胞的后验概率曲线。根据最小错误概率准则,判决结果见曲线下方,其中“*”代表判决为正常细胞,“五角星”代表异常细胞各细胞分类结果。 最小风险贝叶斯决策分类器设计 实验程序x = -3.9847 , -3.5549 , -1.2401 , -0.9780 , -0.7932 , -2.8531 ,-2.7605 , -3.7287 , -3.5414 , -2.2692 ,. -3.4549 , -3.0752 , -3.9934 , 2.8792 , -0.9780 , 0.7932 , 1.1882 , 3.0682, -1.5799 , -1.4885 , -0.7431 , -0.4221 , -1.1186 , 4.2532 ;disp(x) pw1=0.9 ;%第一类的先验概率pw2=0.1 ;%第二类的先验概率m=numel(x); %样品个数 R1_x=zeros(1,m) ;%判为第一类的条件风险R2_x=zeros(1,m) ;%判为第二类的条件风险 result=zeros(1,m) ;%识别结果e1=-2; %第一类的均值a1=0.5 ;%第一类的标准差e2=2 ;%第二类的均值a2=2 ;%第二类的标准差%决策表r11=0 ;r12=2 ;r21=4 ;r22=0 ; %计算条件风险for i=1:m R1_x(i)=r11*pw1*normpdf(x(i),e1,a1)/(pw1*normpdf(x(i),e1,a1)+pw2*normpdf(x(i),e2,a2)+r21*pw2*normpdf(x(i),e2,a2)/(pw1*normpdf(x(i),e1,a1)+pw2*normpdf(x(i),e2,a2); R2_x(i)=r12*pw1*normpdf(x(i),e1,a1)/(pw1*normpdf(x(i),e1,a1)+pw2*normpdf(x(i),e2,a2)+r22*pw2*normpdf(x(i),e2,a2)/(pw1*normpdf(x(i),e1,a1)+pw2*normpdf(x(i),e2,a2) ;end for i=1:m if R2_x(i)>R1_x(i)% result(i)=0; else result(i)=1; end end a=-5:0.05:5;n=numel(a); R1_plot=zeros(1,n) ;R2_plot=zeros(1,n); for j=1:n R1_plot(j)=r11*pw1*normpdf(a(j),e1,a1)/(pw1*normpdf(a(j),e1,a1)+pw2*normpdf(a(j),e2,a2)+r21*pw2*normpdf(a(j),e2,a2)/(pw1*normpdf(a(j),e1,a1)+pw2*normpdf(a(j),e2,a2); R2_plot(j)=r12*pw1*normpdf(a(j),e1,a1)/(pw1*normpdf(a(j),e1,a1)+pw2*normpdf(a(j),e2,a2)+r22*pw2*normpdf(a(j),e2,a2)/(pw1*normpdf(a(j),e1,a1)+pw2*normpdf(a(j),e2,a2); end figure(1) hold on plot(a,R1_plot,'b-',a,R2_plot,'g*-') for k=1:m if result(k)=0 plot(x(k),-0.1,'b') else plot(x(k),-0.1,'go') end; end; legend('正常细胞','异常细胞','Location','Best') xlabel('细胞分类结果') ylabel('条件风险') title('风险决策曲线') grid on实验结果其中带*的绿色曲线代表异常细胞的条件风险曲线;另一条光滑的蓝色曲线为判为正常细胞的条件风险曲线。根据贝叶斯最小风险判决准则,判决结果见曲线下方,其中“上三角”代表判决为正常细胞,“圆圈“代表异常细胞。 比较分析:在图1中,这两个样本点下两类决策的后验概率相差很小,当结合最小风险贝叶斯决策表进行计算时,“损失因素”就起了主导作用,导致出现了相反的结果。实验二三 多分类Bayes分类器设计数据集为Mnistall 数据集,加载到内存,解析数据集的组织结构,完成10类手写体数据集的分类问题。实验原理首先提取手写体的特征,训练集为28*28的手写体图片,将手写体图片等分为7*7份,每一份的大小为4*4,统计每份中非0像素(即手写体)的个数n,像素占有率大于T(设为0.05)取特征值1,否则取特征值0。对于要识别的手写体,首先提取特征值,然后计算09类的后验概率,后验概率最大即为对应类别实验内容%手写体特征值提取函数function sample_feature=feature_extraction(sample)%单个样品的行数,单个样品的列数,训练集的个数image_row,image_col,sample_num=size(sample);sample_feature=zeros(49,sample_num);%存储训练集的特征yuzhi=0.05;%窗口面积比阈值%提取训练集的特征for k=1:sample_num p=1; for i=1:4:image_row-3 for j=1:4:image_col-3 for m=i:i+3 for n=j:j+3 if (sample(m,n,k)=0) %统计手写体中每个窗口中非零像素的个数 sample_feature(p,k)=sample_feature(p,k)+1; end end end %面积占有率大于yuzhi取特征值为1 if ( (sample_feature(p,k)/16)>yuzhi ) sample_feature(p,k)=1; else sample_feature(p,k)=0; end p=p+1; end endend主函数load mnistAll;%提取样品库每个手写体的特征train_feature=feature_extraction(mnist.train_images);train_num=60000;%训练集大小%求09手写数字的特征分布pw=zeros(1,10);%先验概率pxw=zeros(49,10);%训练集的类条件概率for k=1:train_num i=mnist.train_labels(k)+1; %统计每类的样品个数 pw(i)=pw(i)+1; %统计每类的每个特征特征值为1的个数 pxw(:,i)=pxw(:,i)+train_feature(:,k);endfor i=1:10 %求每类的特征分布概率 pxw(:,i)=(pxw(:,i)+1)/(pw(i)+2);endpw=pw/train_num;pwx=zeros(1,10);%后验概率test_feature=feature_extraction(mnist.test_images);test_num=10000;%测试样品个数true_num=0;for k=1:test_num pxw_test=zeros(1,10)+1;%测试样品的类条件概率 for i=1:10 %求测试样品的类条件概率 for j=1:49 if(test_feature(j,k)=1) pxw_test(i)=pxw_test(i)*pxw(j,i); else pxw_test(i)=pxw_test(i)*(1-pxw(j,i); end end end for i=1:10 %测试样品的后验概率的分子 pwx(i)=pw(i)*pxw_test(i); end maxval maxpos=max(pwx); y=maxpos-1; if ( y=mnist.test_labels(k) true_num=true_num+1; endend识别结果10000个测试样品中正确识别了6891个,正确率为68.91%实验四基于Fisher准则的线性分类器设计一、实验目的本实验旨在让同学进一步了解分类器的设计概念,能够根据自己的设计对线性分类器有更深刻地认识,理解Fisher准则方法确定最佳线性分界面方法的原理。二、实验原理线性判别函数的一般形式可表示成 其中 根据Fisher选择投影方向W的原则,即使原样本向量在该方向上的投影能兼顾类间分布尽可能分开,类内样本投影尽可能密集的要求,用以评价投影方向W的函数为: 上面的公式是使用Fisher准则求最佳法线向量的解,该式比较重要。另外,该式这种形式的运算,我们称为线性变换,其中式一个向量,是的逆矩阵,如是d维,和都是d×d维,得到的也是一个d维的向量。向量就是使Fisher准则函数达极大值的解,也就是按Fisher准则将d维X空间投影到一维Y空间的最佳投影方向,该向量的各分量值是对原d维特征向量求加权和的权值。以上讨论了线性判别函数加权向量W的确定方法,并讨论了使Fisher准则函数极大的d维向量 的计算方法,但是判别函数中的另一项尚未确定,一般可采用以下几种方法确定如或者 或当与已知时可用当W0确定之后,则可按以下规则分类,使用Fisher准则方法确定最佳线性分界面的方法是一个著名的方法,尽管提出该方法的时间比较早,仍见有人使用。三、实验内容已知有两类数据和二者的概率已知=0.6, =0.4。中数据点的坐标对应一一如下: 数据:x1 = 0.2331 1.5207 0.6499 0.7757 1.0524 1.1974 0.2908 0.2518 0.6682 0.5622 0.9023 0.1333 -0.5431 0.9407 -0.2126 0.0507 -0.0810 0.7315 0.3345 1.0650 -0.0247 0.1043 0.3122 0.6655 0.5838 1.1653 1.2653 0.8137 -0.3399 0.5152 0.7226 -0.2015 0.4070 -0.1717 -1.0573 -0.2099x2 = 2.3385 2.1946 1.6730 1.6365 1.7844 2.0155 2.0681 2.1213 2.4797 1.5118 1.9692 1.8340 1.8704 2.2948 1.7714 2.3939 1.5648 1.9329 2.2027 2.4568 1.7523 1.6991 2.4883 1.7259 2.0466 2.0226 2.3757 1.7987 2.0828 2.0798 1.9449 2.3801 2.2373 2.1614 1.9235 2.2604x3 = 0.5338 0.8514 1.0831 0.4164 1.1176 0.5536 0.6071 0.4439 0.4928 0.5901 1.0927 1.0756 1.0072 0.4272 0.4353 0.9869 0.4841 1.0992 1.0299 0.7127 1.0124 0.4576 0.8544 1.1275 0.7705 0.4129 1.0085 0.7676 0.8418 0.8784 0.9751 0.7840 0.4158 1.0315 0.7533 0.9548数据点的对应的三维坐标为x1 = 1.4010 1.2301 2.0814 1.1655 1.3740 1.1829 1.7632 1.9739 2.4152 2.5890 2.8472 1.9539 1.2500 1.2864 1.2614 2.0071 2.1831 1.7909 1.3322 1.1466 1.7087 1.5920 2.9353 1.4664 2.9313 1.8349 1.8340 2.5096 2.7198 2.3148 2.0353 2.6030 1.2327 2.1465 1.5673 2.9414x2 = 1.0298 0.9611 0.9154 1.4901 0.8200 0.9399 1.1405 1.0678 0.8050 1.2889 1.4601 1.4334 0.7091 1.2942 1.3744 0.9387 1.2266 1.1833 0.8798 0.5592 0.5150 0.9983 0.9120 0.7126 1.2833 1.1029 1.2680 0.7140 1.2446 1.3392 1.1808 0.5503 1.4708 1.1435 0.7679 1.1288x3 = 0.6210 1.3656 0.5498 0.6708 0.8932 1.4342 0.9508 0.7324 0.5784 1.4943 1.0915 0.7644 1.2159 1.3049 1.1408 0.9398 0.6197 0.6603 1.3928 1.4084 0.6909 0.8400 0.5381 1.3729 0.7731 0.7319 1.3439 0.8142 0.9586 0.7379 0.7548 0.7393 0.6739 0.8651 1.3699 1.1458数据的样本点分布如下图:图 1:样本点分布图四、实验要求1) 请把数据作为样本,根据Fisher选择投影方向的原则,使原样本向量在该方向上的投影能兼顾类间分布尽可能分开,类内样本投影尽可能密集的要求,求出评价投影方向的函数,并在图形表示出来。并在实验报告中表示出来,并求使取极大值的。用matlab完成Fisher线性分类器的设计,程序的语句要求有注释。2) 根据上述的结果并判断(1,1.5,0.6)(1.2,1.0,0.55),(2.0,0.9,0.68),(1.2,1.5,0.89),(0.23,2.33,1.43),属于哪个类别,并画出数据分类相应的结果图,要求画出其在上的投影。3) 回答如下问题,分析一下的比例因子对于Fisher判别函数没有影响的原因。五、实验结果1、源代码x1=0.2331 1.5207 0.6499 0.7757 1.0524 1.1974 . 0.2908 0.2518 0.6682 0.5622 0.9023 0.1333 . -0.5431 0.9407 -0.2126 0.0507 -0.0810 0.7315 . 0.3345 1.0650 -0.0247 0.1043 0.3122 0.6655 . 0.5838 1.1653 1.2653 0.8137 -0.3399 0.5152 . 0.7226 -0.2015 0.4070 -0.1717 -1.0573 -0.2099' y1=2.3385 2.1946 1.6730 1.6365 1.7844 2.0155 . 2.0681 2.1213 2.4797 1.5118 1.9692 1.8340 . 1.8704 2.2948 1.7714 2.3939 1.5648 1.9329 . 2.2027 2.4568 1.7523 1.6991 2.4883 1.7259 . 2.0466 2.0226 2.3757 1.7987 2.0828 2.0798 . 1.9449 2.3801 2.2373 2.1614 1.9235 2.2604' z1=0.5338 0.8514 1.0831 0.4164 1.1176 0.5536 . 0.6071 0.4439 0.4928 0.5901 1.0927 1.0756 . 1.0072 0.4272 0.4353 0.9869 0.4841 1.0992 . 1.0299 0.7127 1.0124 0.4576 0.8544 1.1275 . 0.7705 0.4129 1.0085 0.7676 0.8418 0.8784 . 0.9751 0.7840 0.4158 1.0315 0.7533 0.9548' %存储第一类点 x2=1.4010 1.2301 2.0814 1.1655 1.3740 1.1829 . 1.7632 1.9739 2.4152 2.5890 2.8472 1.9539 . 1.2500 1.2864 1.2614 2.0071 2.1831 1.7909 . 1.3322 1.1466 1.7087 1.5920 2.9353 1.4664 . 2.9313 1.8349 1.8340 2.5096 2.7198 2.3148 . 2.0353 2.6030 1.2327 2.1465 1.5673 2.9414' y2=1.0298 0.9611 0.9154 1.4901 0.8200 0.9399 . 1.1405 1.0678 0.8050 1.2889 1.4601 1.4334 . 0.7091 1.2942 1.3744 0.9387 1.2266 1.1833 . 0.8798 0.5592 0.5150 0.9983 0.9120 0.7126 . 1.2833 1.1029 1.2680 0.7140 1.2446 1.3392 . 1.1808 0.5503 1.4708 1.1435 0.7679 1.1288' z2=0.6210 1.3656 0.5498 0.6708 0.8932 1.4342 . 0.9508 0.7324 0.5784 1.4943 1.0915 0.7644 . 1.2159 1.3049 1.1408 0.9398 0.6197 0.6603 . 1.3928 1.4084 0.6909 0.8400 0.5381 1.3729 . 0.7731 0.7319 1.3439 0.8142 0.9586 0.7379 . 0.7548 0.7393 0.6739 0.8651 1.3699 1.1458' %存储第二类点Pw1=0.6Pw2=0.4%求第一类点的均值向量m1m1x=mean(x1(:) %全部平均m1y=mean(y1(:) %全部平均m1z=mean(z1(:) %全部平均m1=m1x m1y m1z%求第二类点的均值向量m2m2x=mean(x2(:) %全部平均m2y=mean(y2(:) %全部平均m2z=mean(z2(:) %全部平均m2=m2x m2y m2z%求第一类类内离散矩阵S1S1=zeros(3,3)for i=1:36 S1=S1+(x1(i),y1(i),z1(i)'-m1)*(x1(i),y1(i),z1(i)'-m1)'end%求第二类类内离散矩阵S2S2=zeros(3,3)for i=1:36 S2=S2+(x2(i),y2(i),z2(i)'-m2)*(x2(i),y2(i),z2(i)'-m2)'end%求总类内离散度矩阵SwSw=S1+S2%求向量W*W=(inv(Sw)*(m1-m2)%画出决策面x=0:.1:2.5y=0:.1:3X,Y=meshgrid(x,y)Z=(W(1)*X+W(2)*Y)/(-W(3)mesh(X,Y,Z)%保持hold on%透视决策面hidden off%求第一类样品的投影值均值Y1=0for i=1:36 Y1=Y1+W'*x1(i),y1(i),z1(i)'endM1=Y1/36%求第二类样品的投影值均值Y2=0for i=1:36 Y2=Y2+W'*x2(i),y2(i),z2(i)'endM2=Y2/36%选取阈值Y0Y0=(M1+M2)/2+(log(Pw1)/log(Pw2)/70%判定未知样品类别X1=1,1.5,0.6'if W'*X1>Y0 disp('点X1(1,1.5,0.6)属于第一类') plot3(1,0.5,0.6,'or')else disp('点X1(1,1.5,0.6)属于第二类') plot3(1,0.5,0.6,'ob')endX2=1.2,1.0,0.55'if W'*X2>Y0 disp('点X2(1.2,1.0,0.55)属于第一类') plot3(1.2,1.0,0.55,'or')else disp('点X2(1.2,1.0,0.55)属于第二类') plot3(1.2,1.0,0.55,'ob')endX3=2.0,0.9,0.68'if W'*X3>Y0 disp('点X3(2.0,0.9,0.68)属于第一类') plot3(2.0,0.9,0.68,'or')else disp('点X3(2.0,0.9,0.68)属于第二类') plot3(2.0,0.9,0.68,'ob')endX4=1.2,1.5,0.89'if W'*X4>Y0 disp('点X4(1.2,1.5,0.89)属于第一类') plot3(1.2,1.5,0.89,'or')else disp('点X4(1.2,1.5,0.89)属于第二类') plot3(1.2,1.5,0.89,'ob')endX5=0.23,2.33,1.43'if W'*X5>Y0 disp('点X5(0.23,2.33,1.43)属于第一类') plot3(0.23,2.33,1.43,'or')else disp('点X5(0.23,2.33,1.43)属于第二类') plot3(0.23,2.33,1.43,'ob')end2、 决策面图 2:决策面(红色代表第一类,蓝色代表第二类)3、 参数决策面向量W = -0.0798 0.2005 -0.0478阈值Y0 =0.1828样本点分类X1 = 1.0000 1.5000 0.6000点X1(1,1.5,0.6)属于第一类X2 = 1.2000 1.0000 0.5500点X2(1.2,1.0,0.55)属于第二类X3 = 2.0000 0.9000 0.6800点X3(2.0,0.9,0.68)属于第二类X4 = 1.2000 1.5000 0.8900点X4(1.2,1.5,0.89)属于第二类X5 = 0.2300 2.3300 1.4300点X5(0.23,2.33,1.43)属于第一类六、实验分析1、 比例因子决策面向量W的比例因子并不影响判别函数。分析如下:阈值:判别函数:可以证明,Y0与WT有关,所以当改变WT时,判别函数两边同时改变,所以WT并不影响判别函数。专心-专注-专业