简单分类器的MATLAB实现.doc

简单分类器的MATLAB实现 摘要:本实验运用最小距离法、Fisher线形判别法、朴素贝叶斯法、K近邻法四种模式识别中最简单的方法处理两维两类别的识别问题,最后对实验结果进行了比较。关键字:MATLAB 最小距离 Fisher线形判别 朴素贝叶斯 K近邻法Matlab语言简介 Matlab 语言 (即 Matrix 和 Laboratory) 的前三位字母组合 ,意为“矩阵实验室”,Matlab 语言是一种具有面向对象程序设计特征的高级语言,以矩阵和阵列为基本编程单位。Matlab 可以被高度“向量化”,而且用户易写易读。传统的高级语言开发程序不仅仅需要掌握所用语言的语法,还需要对有关算法进行深入的分析。与其他高级程序设计语言相比 ,Matlab 在编程的效率、可读性以及可移植性等方面都要高于其他高级语言,但是执行效率要低于高级语言 ,对计算机系统的要求比较高。例如,某数据集是m*n的二维数据组,对一般的高级计算机语言来说,必须采用两层循环才能得到结果,不但循环费时费力 ,而且程序复杂;而用 Matlab 处理这样的问题就快得多,只需要一小段程序就可完成该功能,虽然指令简单 ,但其计算的快速性、准确性和稳定性是一般高级语言程序所远远不及的。严格地说 ,Matlab 语言所开发的程序不能脱离其解释性执行环境而运行。样本预处理实验样本来源于1996年UCI的Abalone data,原始样本格式如下:1 2 3 4 5 6 7 8 9其中第一行是属性代码:1.sex 2.length 3.diameter 4.height 5.whole_weight 6.shucked_weight 7 .viscera weight 8. shell weight 9.age原始样本是一个8维20类的样本集,就是根据Abalone的第一至第八个特征来预测第九个特征,即Abalone的年龄。为简单其见,首先将原始样本处理成两维两类别问题的样本。选取length和weiht作为两个特征向量,来预测第三个特征向量age.(age=6或者age=9),我们将age=6的样本做为第一类,age=12的样本做为第二类。处理后的样本:length weight age实验过程1.最小距离法最小距离法是事先从给定的训练集中为每一个类别生成一个代表该类的中心向量,计算新向量与每个类别中心向量的距离,距离最小的类别即新向量的类别。两类别的分界面就是就是两类别中心向量终点连线的中垂线。图1分界面方程可以由下式求出:(m1-m2)[x1,x2]'-(m1-m2)(m1+(m2-m1)/2)'=0其中:m1为第一类训练样本的均值,m2为第二类样本的均值.2.Fisher判别法最小距离判别法对于离散度相等的线性可分问题分类效果是令人满意的,但是根据本实验样本而言,由上图可见第一类与第二类的离散度并不相等,而Fisher线性判别法较好的解决的这一问题.Fisher判别法希望类内离散度与类间离散度的比值越小越好,然后根据最小的比值将两维空间影射的一维空间.影射方向可由以下matlab程序求出m1=mean(newtrain6)m2=mean(newtrain12)%求两类的均值s1=cov(newtrain6)s2=cov(newtrain12)%求两类的协方差s=s1+s2w=(inv(s))*(m1-m2)'%求影射方向图2素贝叶斯法朴素贝叶斯算法以贝叶斯定理为理论基础,是一种在已知先验概率与类条件概率情况下的模式识别方法,其基本思想是:一个向量属于某个类别的概率,等于词属于该类别概率的综合表达式。之所以称其为“朴素”,是因为它的条件独立性假设,即个向量在给定类别下的条件概率分布是相互独立的。设训练样本集为m类,记作C={c1,c2,…cm},每类的先验概率P(ci)=ci类样本数/总样本数,i=1,2,……,m,对于新样本x,其属于ci的条件概率为P(x|ci),根据贝叶斯定理,ci的后验概率为P(ci|x)为: (2-1)如果 i=1,2,……,m,则 (2-2)上式为最大后验概率判别准则。将式子2-1代入2-2中,则有:如果 i=1,2,……,m,则 (2-3)特殊情况下,若,可以采用最大似然判别准则:如果 j=1,2,……,m,则 (2-4)对本实验而言我们假设先验概率相等即P(c1)= P(c2),现在主要问题就转化为求类条件概率密度问题,我们假设类条件概率密度服从正态分布,采用最大似然估计法估计参数。用最大似然估计发求参数的matla

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐