资源描述:
《《模式识别》实验报告-贝叶斯分类》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、模式识别实验报告西安交通大学高海南《模式识别》实验报告---最小错误率贝叶斯决策分类一、实验原理对于具有多个特征参数的样本(如本实验的iris数据样本有个参数),其正态分布的概率密度函数可定义为式中,是维行向量,是维行向量,是维协方差矩阵,是的逆矩阵,是的行列式。本实验我们采用最小错误率的贝叶斯决策,使用如下的函数作为判别函数(3个类别)其中为类别发生的先验概率,为类别的类条件概率密度函数。由其判决规则,如果使对一切成立,则将归为类。我们根据假设:类别,i=1,2,……,N的类条件概率密度函数,i=1,2,……,N服从正态分布,即有~,那么上式就可以
2、写为对上式右端取对数,可得上式中的第二项与样本所属类别无关,将其从判别函数中消去,不会改变分类结果。则判别函数可简化为以下形式7模式识别实验报告西安交通大学高海南二、实验步骤(1)从Iris.txt文件中读取估计参数用的样本,每一类样本抽出前40个,分别求其均值,公式如下7模式识别实验报告西安交通大学高海南clear%原始数据导入iris=load('C:MATLAB7work模式识别iris.txt');N=40;%每组取N=40个样本%求第一类样本均值fori=1:Nforj=1:4w1(i,j)=iris(i,j+1);endendsu
3、mx1=sum(w1,1);fori=1:4meanx1(1,i)=sumx1(1,i)/N;end%求第二类样本均值fori=1:Nforj=1:4w2(i,j)=iris(i+50,j+1);endendsumx2=sum(w2,1);fori=1:4meanx2(1,i)=sumx2(1,i)/N;end%求第三类样本均值fori=1:Nforj=1:4w3(i,j)=iris(i+100,j+1);endendsumx3=sum(w3,1);fori=1:4meanx3(1,i)=sumx3(1,i)/N;end7模式识别实验报告西安交通大学
4、高海南(2)求每一类样本的协方差矩阵、逆矩阵以及协方差矩阵的行列式,协方差矩阵计算公式如下其中代表类的第个样本,第j个特征值;代表类的个样品第j个特征的平均值代表类的第l个样品,第k个特征值;代表类的个样品第k个特征的平均值。7模式识别实验报告西安交通大学高海南%求第一类样本协方差矩阵z1(4,4)=0;var1(4,4)=0;fori=1:4forj=1:4fork=1:Nz1(i,j)=z1(i,j)+(w1(k,i)-meanx1(1,i))*(w1(k,j)-meanx1(1,j));endvar1(i,j)=z1(i,j)/(N-1);en
5、dend%求第二类样本协方差矩阵z2(4,4)=0;var2(4,4)=0;fori=1:4forj=1:4fork=1:Nz2(i,j)=z2(i,j)+(w2(k,i)-meanx2(1,i))*(w2(k,j)-meanx2(1,j));endar2(i,j)=z2(i,j)/(N-1);endend%求第三类样本协方差矩阵z3(4,4)=0;var3(4,4)=0;fori=1:4forj=1:4fork=1:Nz3(i,j)=z3(i,j)+(w3(k,i)-meanx3(1,i))*(w3(k,j)-meanx3(1,j));endvar
6、3(i,j)=z3(i,j)/(N-1);endend%求各类的协方差矩阵逆矩阵及行列式var1_inv=[];var1_det=[];var2_inv=[];var2_det=[];var3_inv=[];var3_det=[];var1_inv=inv(var1)var2_inv=inv(var2)var3_inv=inv(var3)var1_det=det(var1)var2_det=det(var2)var3_det=det(var3)7模式识别实验报告西安交通大学高海南(3)对三个类别,分别取每组剩下的10个样本,每两组进行分类。由于每一类
7、样本都相等,且每一类选取用作训练的样本也相等,在每两组进行分类时,待分类样本的类先验概率。将各个样本代入判别函数根据判决规则,如果使对一切成立,则将归为类。若取第一类后10个数据和第二类进行分类,代码如下M=10;fori=1:Mforj=1:4test(i,j)=iris(i+50,j+1);%取测试数据endendt1=0;t2=0;t3=0;fori=1:M7模式识别实验报告西安交通大学高海南x=test(i,1);y=test(i,2);z=test(i,3);h=test(i,4);g1=(-0.5)*([x,y,z,h]-meanx1)*
8、var1_inv*([x,y,z,h]'-meanx1')-0.5*log(abs(var1_det))+l