模式识别上机实验报告班级:姓名:学号:实验一、二维随机数的产生1、实验目的(1)学习采用Matlab程序产生正态分布的二维随机数(2)掌握估计类均值向量和协方差矩阵的方法(3)掌握类间离散度矩阵、类内离散度矩阵的计算方法(4)熟悉matlab中运用mvnrnd函数产生二维随机数等matlab语言2、实验原理多元正态分布概率密度函数:11()()2/21/21()(2)||TXXdpXe其中:是d维均值向量:TdEX{}[,,...,]12Σ是d×d维协方差矩阵:TEXX[()()](1)估计类均值向量和协方差矩阵的估计各类均值向量1iiXimXN各类协方差矩阵1()()iTiiiXiXXN(2)类间离散度矩阵、类内离散度矩阵的计算类内离散度矩阵:()()iTiiiXSXmXm,i=1,2总的类内离散度矩阵:12WSSS类间离散度矩阵:1212()()TbSmmmm3、实验内容及要求产生两类均值向量、协方差矩阵如下的样本数据,每类样本各50个。1[2,2],11001,2[2,2],21004(1)画出样本的分布图;(2)编写程序,估计类均值向量和协方差矩阵;(3)编写程序,计算类间离散度矩阵、类内离散度矩阵;(4)每类样本数增加到500个,重复(1)-(3)模式识别上机实验报告班级:姓名:学号:4、实验结果(1)、样本的分布图模式识别上机实验报告班级:姓名:学号:(2)、类均值向量、类协方差矩阵根据matlab程序得出的类均值向量为:N=50:m1=[-1.7160-2.0374]m2=[2.14851.7678]N=500:m1=[-2.0379-2.0352]m2=[2.04282.1270]根据matlab程序得出的类协方差矩阵为:N=50:]0628.11354.01354.06428.1[12]5687.40624.00624.08800.0[N=500:1]0344.10162.00162.09187.0[2]9038.30211.00211.09939.0[(3)、类间离散度矩阵、类内离散度矩阵根据matlab程序得出的类间离散度矩阵为:N=50:]4828.147068.147068.149343.14[bSN=500:]3233.179843.169843.166519.16[bS根据matlab程序得出的类内离散度矩阵为:N=50:]0703.533088.73088.71052.78[1S]7397.2253966.13966.18975.42[2S]8100.2789123.59123.50026.121[WSN=500:]5964.5167490.87490.86203.458[1S]8.19438420.78420.70178.496[2S]4.24609071.09071.06381.954[WS5、结论由mvnrnd函数产生的结果是一个N*D的一个矩阵,在本实验中D是2,N是50和500.根据实验数据可以看出,当样本容量变多的时候,两个变量的总体误差变小,观测变量各个取值之间的差异程度减小。6、实验程序clc;closeall;clearall;%parameterN=50;N_1=500;mu_1=[-2,-2];Sigma_1=[1,0;0,1];r_1=mvnrnd(mu_1,Sigma_1,N);r_11=mvnrnd(mu_1,Sigma_1,N_1);mu_2=[2,2];Sigma_2=[1,0;0,4];模式识别上机实验报告班级:姓名:学号:r_2=mvnrnd(mu_2,Sigma_2,N);r_22=mvnrnd(mu_2,Sigma_2,N_1);%figuresfigure(1);plot(r_1(:,1),r_1(:,2),'.');%将矩阵r_1的第一列当成横坐标,第二列当作纵坐标。title('样本数为50时的第一类样本分布图');figure(2);plot(r_2(:,1),r_2(:,2),'.');title('样本数为50时的第二类样本分布图');figure(3);plot(r_11(:,1),r_11(:,2),'.');title('样本数为500时的第一类样本分布图');figure(4);plot(r_22(:,1),r_22(:,2),'.');title('样本数为500时的第二类样本分布图');%类均值向量和类协方差矩阵m_1=mean(r_1);%样本数为50时第一类类均值向量m_2=mean(r_2);%样本数为50时第二类类均值向量m_11=mean(r_11);%样本数为500时第一类类均值向量m_22=mean(r_22);%样本数为500时第二类类均值向量sum1=[0,0;0,0];forn=1:Nsum1=sum1+(r_1(n,:)-mu_1)'*(r_1(n,:)-mu_1);endE_1=sum1/N;%样本数为50时,第一类类协方差矩阵sum2=[0,0;0,0];forn=1:Nsum2=sum2+(r_2(n,:)-mu_2)'*(r_2(n,:)-mu_2);endE_2=sum2/N;%样本数为50时,第二类类协方差矩阵sum3=[0,0;0,0];forn=1:N_1sum3=sum3+(r_11(n,:)-mu_1)'*(r_11(n,:)-mu_1);endE_11=sum3/N_1;%样本数为500时,第一类类协方差矩阵sum4=[0,0;0,0];forn=1:N_1模式识别上机实验报告班级:姓名:学号:sum4=sum4+(r_22(n,:)-mu_2)'*(r_22(n,:)-mu_2);endE_22=sum4/N_1;%样本数为500时,第二类类协方差矩阵%计算类间离散度和类内离散度Sb_1=(m_1-m_2)'*(m_1-m_2);%样本数为50时的,类间离散度矩阵Sb_2=(m_11-m_22)'*(m_11-m_22);%样本数为500时的,类间离散度矩阵S_1=[0,0;0,0];S_2=[0,0;0,0];forn=1:NS_1=S_1+(r_1(n,:)-m_1)'*(r_1(n,:)-m_1);S_2=S_2+(r_2(n,:)-m_2)'*(r_2(n,:)-m_2);endSW1=S_1+S_2;%样本数为50时的,总的类内离散度矩阵S_11=[0,0;0,0];S_22=[0,0;0,0];forn=1:N_1S_11=S_11+(r_11(n,:)-m_11)'*(r_11(n,:)-m_11);S_22=S_22+(r_22(n,:)-m_22)'*(r_22(n,:)-m_22);endSW2=S_11+S_22;%样本数为500时的,总的类内离散度矩阵模式识别上机实验报告班级:姓名:学号:实验二、Fisher线性分类器的设计1、实验目的(1)掌握Fisher线性判别方法(2)掌握Bayes决策的错误率的计算(3)掌握分类器错误率的估算方法(4)对模式识别有一个初步的理解2、实验原理Fisher准则基本原理:如果在二维空间中一条直线能将两类样本分开,或者错分类很少,则同一类别样本数据在该直线的单位法向量上的投影的绝大多数都应该超过某一值。而另一类数据的投影都应该小于(或绝大多数都小于)该值,则这条直线就有可能将两类分开。准则:向量W的方向选择应能使两类样本投影的均值之差尽可能大些,而使类内样本的离散程度尽可能小。这就是Fisher准则函数的基本思路。y=WTX+W0评价投影方向W的函数:()TbFTWWSWJWWSW最佳W值的确定:求取使JF达极大值时的w*:*112()WWSmm向量*W就是使Fisher准则函数)(WJF达极大值的解,也就是按Fisher准则将d维X空间投影到一维Y空间的最佳投影方向,该向量*W的各分量值是对原d维特征向量求加权和的权值。w0确定:0122mmW当W0确定之后,则可按以下规则分类,2010XwXWXwXWTT使用Fisher准则方法确定最佳线性分界面的方法是一个著名的方法,尽管提出该方法的时间比较早,仍见有人使用。3、实验内容及要求考虑Fisher线性判别方法,利用实验1中程序产生的数据(分别在各类样本数均为50及500时),计算:1)求解最优投影方向W;2)画出表示最优投影方向的直线,并且标记出投影后的点在直线上的位置;3)计算投影后的阈值权;4)计算分类器的各类错误率及总的平均错误率;模式识别上机实验报告班级:姓名:学号:5)计算按最小错误率Bayes决策的错误率(各类先验概率相同)4、实验结果上图可以看出在N=50时的情况下绿色的点是第一类样本点,蓝色的*给出了第二类样本点,红色的直线是最优投影方向的直线,+标出的点是W0点,直线上不同颜色代表了不同类样本点所投影的点的位置。模式识别上机实验报告班级:姓名:学号:上图可以看出在N=500时的情况下绿色的点是第一类样本点,蓝色的*给出了第二类样本点,红色的直线是最优投影方向的直线,+标出的点是W0点,直线上不同颜色代表了不同类样本点所投影的点的位置。由matlab程序可以求得:N=50时,类一的错误概率为0类二的错误概率为8%平均错误概率为1%Bayes决策错误率为0%最佳投影方向]1432.00311.0[*WN=500时,类一的错误概率为0.4%类二的错误概率为2.2%平均错误概率为1.3%Bayes决策错误率为0.9%最佳投影方向]0166.00084.0[*W5、结论通过对实验结果的探究,可以得出当样本数比较大的时候类错误概率会上升。W的比例因子对于Fisher判别函数没有影响的原因:在本实验中,最重要的是W的方向,或者说是在此方向上数据的投影,所以W的比例因子,即它是单位向量的多少倍长就没那么重要了,不管比例因子大小是多少,在最后求投影时都会被消掉。6、实验程序%实验二%样本数为50时W_0=-(m_1+m_2)/2;w=(m_1-m_2)*inv(SW1);%投影向量Sk=w(:,2)/w(:,1);%最优投影方向直线的斜率。x=[-7:0.01:7];y=k*(x-W_0(:,1))+W_0(:,2);%最优投影方向直线figure(3);plot(r_1(:,1),r_1(:,2),'g.');title('样本数为50时的样本分布图');holdon;plot(r_2(:,1),r_2(:,2),'*');plot(W_0(1),W_0(2),'+');plot(x,y,'r');%画出最优投影方向直线A0=[k-1;1k];X0=zeros(2,N);forn=1:N模式识别上机实验报告班级:姓名:学号:b=[k*W_0(:,1)-W_0(:,2)r_1(n,1)+k*r_1(n,2)]';X0(:,n)=inv(A0)*b;endA1=[k-1;1k];X1=zeros(2,N);forn=1:Nb1=[k*W_0(:,1)-W_0(:,2)r_2(n,1)+k*r_2(n,2)]';X1(:,n)=inv(A1)*b1;endplot(X0(1,:),X0(2,:),'g');plot(X1(1,:),X1(2,:),'b');holdoff;en1=0;en2=0;form=1:NifX0(1,m)W_0(:,1)en1=en1+1;endifX1(1,m)W_0(:,1)en2=en2+1;endendp1=en1/N;%类一错误率p2=en2/N;%类二错误率p0=(en1+en2)/(2*N);%平均错误率Pw1=0.5;Pw2=0.5;Pbayes1=Pw1*p1+Pw2*p2;%Bayes决策错误率%样本数为500时W_00=-(m_11+m_22)/2;w1=(m_11-m_22)*inv(SW2