您好,欢迎访问三七文档
1模式识别上机作业Bayes、最近邻算法分类器设计姓名:刘德龙学号:03081413班级:030814日期:2011.052基于概率统计的贝叶斯分类器设计一原理概述:贝叶斯分类器是基于贝叶斯网络所构建的分类器,贝叶斯网络是描述数据变量之间关系的图形模型,是一个带有概率注释的有向无环图。贝叶斯分类器的分类原理是通过某对象的先验概率,利用贝叶斯公式计算出其后验概率,即该对象属于某一类的概率,选择具有最大后验概率的类作为该对象所属的类。(1)贝叶斯分类并不把一个对象绝对地指派给某一类,而是通过计算得出属于某一类的概率,具有最大概率的类便是该对象所属的类;(2)一般情况下在贝叶斯分类中所有的属性都潜在地起作用,即并不是一个或几个属性决定分类,而是所有的属性都参与分类;(3)贝叶斯分类对象的属性可以是离散的、连续的,也可以是混合的..二计算方法:1、贝叶斯分类的先决条件:(1)决策分类的类别数是一定的,设有c个模式类ωi(i=1,2,…,c)(2)各类别总体的概率分布已知,待识别模式的特征向量x的状态后验概率P(ωi|x)是已知的;或各类出现的先验概率P(ωi)和类条件概率密度函数p(x|ωi)已知2、两类分类的最小错误率Bayes分类决策规则的后验概率形式:设N个样本分为两类ω1,ω2。每个样本抽出n个特征,x=(x1,x2,x3,…,xn)TpBAPAPABpB221121),()(),()(xxPxPxxPxP则若则若3其中,P(ωi|x)为状态后验概率。由Bayes公式:两类分类的贝叶斯决策函数:三实例说明:一数据集有两类,每个样本有两个特征,类别1(class1.txt文件)含有150个样本,类别2(class2.txt文件)含有250个样本(.txt文件可以直接在Matlab中读入),分别取类别1的前100个和类别2的前200个样本作为训练样本,剩下的作为测试样本。要求:(1)根据基于最小错误率的贝叶斯决策理论设计分类器;(2)叙述实验具体步骤,给出所设计的分类器对训练样本和测试样本的错误率;(3)提交的作业需包含Matlab程序代码(4)绘制分类结果(包含决策边界)的图像1、实验原理多元正太分布的概率密度函数由下式定义112211()exp()()2(2)TdpXXX21)()()()()(jjjiiiPxpPxpxP)(,)()(ln)()(ln)()4()(,)()()()()()3()(),()()()()()2()(),()()()1(12211221221121取对数方法似然比形式类条件概率密度后验概率PPxpxpxgPPxpxpxgPxpPxpxgxPxPxg4由最小错误概率判决规则,可得采用如下的函数作为判别函数()(|)(),1,2,,iiigxpXPiN这里,()iP为类别i发生的先验概率,(|)ipX为类别i的类条件概率密度函数,而N为类别数。设类别i,i=1,2,……,N的类条件概率密度函数(|)ipX,i=1,2,……,N服从正态分布,即有(|)ipX~(,)iiN,那么上式就可以写为1122()1()exp()(),1,2,,2(2)TiidPgXXXiN由于对数函数为单调变化的函数,用上式右端取对数后得到的新的判别函数替代原来的判别函数()igX不会改变相应分类器的性能。因此,可取111()()()ln()lnln(2)222TiiiiiidgXXXP显然,上式中的第二项与样本所属类别无关,将其从判别函数中消去,不会改变分类结果。这样,判别函数()igX可简化为以下形式111()()()ln()ln22TiiiiiigXXXP2、实验步骤(1)求出两类样本的均值11,2iXiXiN(2)求每一类样本的协方差矩阵11()(),1,21iiiNwwijkljjlkklisxxjkN式中,l代表样本在类中的序号,其中ljx代表iw类的第l个样本,第j个特征值;iwj代表iw类的iN个样品第j个特征的平均值5lkx代表iw类的第l个样品,第k个特征值;iwk代表iw类的iN个样品第k个特征的平均值。iw类的协方差矩阵为11122122iiiii(3)计算出每一类的协方差矩阵的逆矩阵1i以及协方差矩阵的行列式i(4)求出每一类的先验概率()/1,2iiPNNi(5)将各个数值代入判别函数111()()()ln()ln22TiiiiiigXXXP判别边界为12()()0gXgX3、实验结果根据matlab的计算结果可得类别1训练样本的错误率为4%,类别2训练样本的错误率为5%;类别1测试样本的错误率为6%,类别2训练样本的错误率为4%。实验图6图1训练样本分类结果如上图所示,“.”代表类别1的训练样本,“*”代表类别2的训练样本,绿线为决策边界;图2测试样本分类结果如上图所示,“.”代表类别1的测试样本,“*”代表类别2的测试样本,绿线为决策边界;4、实验程序代码functiong=pattern(x,y)%clear;S1=load('e:\lwz\class1.txt');%原始数据class1导入S1S2=load('e:\lwz\class2.txt');%原始数据class2导入S2fori=1:1007forj=1:2type1(i,j)=S1(i,j);%将class1的前100个数据导入type1当中,作为训练样本endendfori=1:200forj=1:2type2(i,j)=S2(i,j);%将class2的前200个数据导入type2当中,作为训练样本endend%求训练样本的均值sumx1=sum(type1,1);meanx1=sumx1(1,1)/100;meany1=sumx1(1,2)/100;sumx2=sum(type2,1);meanx2=sumx2(1,1)/200;meany2=sumx2(1,2)/200;%求协方差矩阵z1(2,2)=0;fori=1:100z1(1,1)=z1(1,1)+(type1(i,1)-meanx1)^2;z1(1,2)=z1(1,2)+(type1(i,1)-meanx1)*(type1(i,2)-meany1);z1(2,1)=z1(2,1)+(type1(i,2)-meany1)*(type1(i,1)-meanx1);8z1(2,2)=z1(2,2)+(type1(i,2)-meany1)^2;endz1(1,1)=z1(1,1)/99;z1(1,2)=z1(1,2)/99;z1(2,1)=z1(2,1)/99;z1(2,2)=z1(2,2)/99;z2(2,2)=0;fori=1:200z2(1,1)=z2(1,1)+(type2(i,1)-meanx2)^2;z2(1,2)=z2(1,2)+(type2(i,1)-meanx2)*(type2(i,2)-meany2);z2(2,1)=z2(2,1)+(type2(i,2)-meany2)*(type2(i,1)-meanx2);z2(2,2)=z2(2,2)+(type2(i,2)-meany2)^2;endz2(1,1)=z2(1,1)/199;z2(1,2)=z2(1,2)/199;z2(2,1)=z2(2,1)/199;z2(2,2)=z2(2,2)/199;z1_inv=[];z1_det=[];z2_det=[];z2_det=[];z1_inv=inv(z1);%求协方差矩阵的逆z2_inv=inv(z2);%求协方差矩阵的行列式z1_det=det(z1);9z2_det=det(z2);%求出两类样本的先验概率p1=100/300;p2=200/300;symsxy;g=(-0.5)*[x-meanx1,y-meany1]*z1_inv*[x-meanx1;y-meany1]+log(abs(z1_det))*0.5+log(p1)-((-0.5)*[x-meanx2,y-meany2]*z2_inv*[x-meanx2;y-meany2]+log(abs(z2_det))*0.5+log(p2))%画图命令ezplot(pattern);fori=101:150plot(S1(i,1),S1(i,2),'.')holdonendfori=201:250plot(S2(i,1),S2(i,2),'*')holdonEnd10最近邻分类器:ClickandClassify一原理概述:最近邻分类器在eCognition中指需要用户指定训练样本的分类法,与成员函数分类器相区别。eCognition用“ClickandClassify”来形容其操作简便。用户手册中推荐的针对这种指定训练样本的分类方法的分类策略是:1、先选定少量图斑(对象)作为样本,一开始选定的每一类的样本数为1-3个,选完少量样本后就可以进行第一次分类;2、然后不断重复以下步骤,直到得出满意结果:①、纠正那些被错分的或未被分类的(unclassified)图斑,指定正确类别后,作为样本对象添加到训练样本集中(要小心操作,确保无误);②进行分类。【注意】:1、有些时候,新的样本对象的加入会显著影响到分类结果,有可能原来正确的分类结果,在调整、纠正加入新的样本对象后,许多图斑反而从正确的分类划归为错误的类别了,这时候也不要担心,还是继续重复上面的步骤,重复操作……这样进行下去以后,就能逐步在特征空间中建立起区分各类别的边界,即使这些类别在特征空间中的分布是不规则的且不连续的(离散的),最近邻函数也能对付。2、利用ClickandClassify的方法,用户可能很快就得到了满意的分类结果,也有可能你达到了所选择的特征空间(注意:特征空间也是用户自己可以定义的)所能区分的极限,再添加新的训练样本也无济于事了,分类结果也不会有显著改善了,这也没有关系,咱们可以利用这个得到的分类结果作为下一步“基于上下文信息的分类”的基础数据,在类别层次结构(ClassHierarchy)11里面添加子类,以作进一步的细分。Tour1就是这样的一个例子。二、关于最近邻函数1、标准最近邻(SNN)与普通最近邻(NN)的差别:两者的区别在于它们的作用域不同。NearestNeighbor的特征空间可以为每个类别单独定义,即“class-specific”,而StandardNearestNeighbor则不然,整个Project,SNN的特征空间的定义是唯一的,所有用到SNN的类别,它们的SNN的特征空间全是一样的,而且对每一个类别不可能定义一个以上的标准最邻近函数。SNN和NN的特征空间中一般都不涉及“Class-relatedfeatures”,因为它们需要的是一个绝对的参考系,而不是相对的,避免“循环依赖”现象的出现。即使用到类相关特征,也会受到如下限制:(东阳何生的学习笔记)①、如果一个类别的定义中用到了最邻近函数,而这个最邻近函数的特征空间中利用了“Class-relatedfeatures”,那么这个类别不能用“Similarityof”特征;②、如果一个类别的定义中用到了最邻近函数,而这个最邻近函数的特征空间中利用了“Class-relatedfeatures”,那么这个类别不能有子类。即不能生育或是丁克一族,相当于二叉树中的“叶子节点”,所以这些类别也叫“叶子类别”;③、如果一个类别的定义中用到了最邻近函数,而这个最邻近函数的特征空间中利用了“Class-relatedfeatures”,那么“Class-relatedfeatures”中所参考的类别不能是它自己或其父类。2、如果在一个ClassHierarchy中用到了SNN或NN,那么,当保存Cl
本文标题:模式识别上机
链接地址:https://www.777doc.com/doc-3353547 .html