基于Fisher准则线性分类器设计实验报告

 基于 Fisher 准则线性分类器设计实验报告

  北京邮电大学模式识别实验专业:×××学生姓名:×××指导教师:×××完成时间:××××

  实验二:基于 Fisher 准则线性分类器设计

  目录一、实验类型 2 二、实验目的 2 三、实验条件2 四、实验原理2 五、实验内容 4 六、实验要求 7 七、实验结果 71、源代码 72、决策面 113、参数 11 决策面向量 11 阈值 11 样本点分类 11 八、实验分析 131、比例因子 132、语法障碍 13

  一、实验类型设计型:线性分类器设计(Fisher 准则)二、实验目的本实验旨在让同学进一步了解分类器的设计概念,能够根据自己的设计对线性分类器有更深刻地认识,理解 Fisher 准则方法确定最佳线性分界面方法的原理,以及Lagrande 乘子求解的原理。

  三、实验条件 matlab 软件四、实验原理

  线性判别函数的一般形式可表示成

  其中

  根据 Fisher 选择投影方向 W 的原则,即使原样本向量在该方向上的投影能兼顾类间分布尽可能分开,类内样本投影尽可能密集的要求,用以评价投影方向 W的函数为:

  上面的公式是使用 Fisher 准则求最佳法线向量的解,该式比较重要。另外,该式这种形式的运算,我们称为线性变换,其中式一个向量,是的逆矩阵,如是d 维,和都是 d×d 维,得到的也是一个 d 维的向量。

  向量就是使 Fisher 准则函数达极大值的解,也就是按 Fisher 准则将 d 维*空

 间投影到一维Y空间的最佳投影方向,该向量的各分量值是对原d维特征向量求加权和的权值。

  以上讨论了线性判别函数加权向量 W 的确定方法,并讨论了使 Fisher 准则函数极大的 d 维向量的计算方法,但是判别函数中的另一项尚未确定,一般可采用以下几种方法确定如

  或者

  或当与已知时可用

  …… 当 W0 确定之后,则可按以下规则分类,

  使用 Fisher 准则方法确定最佳线性分界面的方法是一个著名的方法,尽管提出该方法的时间比较早,仍见有人使用。

  五、实验内容已知有两类数据和二者的概率已知=0.6,=0.4。

  中数据点的坐标对应一一如下:

  数据:

  *1=

  0.23310.64991.05240.25180.56220.13330.9407

  -0.2126

  0.0507

  -0.08101.0650

  -0.02470.31221.16530.8137

  -0.3399

  0.5152

  0.7226

  -0.20**

 0.4070

  -0.1717

  -1.0573

  -0.2099*2=

  2.33851.67301.78442.12131.51181.8340

  1.87041.77141.56482.45681.69911.7259

  2.04662.37572.08282.38012.16142.2604*3=

  0.53381.08311.11760.44390.59011.0756

  1.00720.43530.48410.71270.45761.1275

  0.77051.00850.84180.78401.03150.9548 数据点的对应的三维坐标为*1=

  1.40102.08141.37401.97392.58901.9539

  1.25001.26142.18311.14661.59201.4664

  2.93131.83402.71982.60302.14652.9414

  *2=

  1.02980.91540.82001.06781.28891.4334

  0.70911.37441.22660.55920.99830.7126

  1.28331.26801.24460.55031.14351.1288*3=

  0.62100.54980.89320.73241.49430.7644

  1.21591.14080.61971.40840.84001.3729

  0.77311.34390.95860.73930.86511.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、源代码*1=[0.23310.64991.0524

  1.1974...

  0.29080.66820.9023

  0.1333...0.9407

  -0.2126

  0.0507

  -0.0810

  0.7315...

  0.3345

  1.0650

  -0.02470.3122

  0.6655...

  0.58381.2653

  0.8137

  -0.3399

 0.5152...

  0.7226

  -0.20**

  0.4070

  -0.1717

  -1.0573

  -0.2099]';2.19461.63652.0155...

  2.06812.47971.9692

  1.8340...

  1.87041.77141.5648

  1.9329...

  2.20271.75232.4883

  1.7259...

  2.04662.37572.0828

  2.0798...

  1.94492.23731.9235

  2.2604]';0.85140.41640.5536...

  0.60710.49281.0927

  1.0756...

  1.00720.43530.4841

  1.0992...

  1.02991.01240.8544

  1.1275...

 0.77051.00850.8418

  0.8784...

  0.97510.41580.7533

  0.9548]';

  %存储第一类点 1.23011.16551.1829...

  1.76322.41522.8472

  1.9539...

  1.25001.26142.1831

  1.7909...

  1.33221.70872.9353

  1.4664...

  2.93131.83402.7198

  2.3148...

  2.03531.23271.5673

  2.9414]';0.96111.49010.9399...

  1.14050.80501.4601

  1.4334...

  0.70911.37441.2266

  1.1833...

  0.87980.51500.9120

  0.7126...

  1.28331.26801.2446

  1.3392...

 1.18081.47080.7679

  1.1288]';1.36560.67081.4342...

  0.95080.57841.0915

  0.7644...

  1.21591.14080.6197

  0.6603...

  1.39280.69090.5381

  1.3729...

  0.77311.34390.9586

  0.7379...

  0.75480.67391.3699

  1.1458]';

  %存储第二类点 Pw1=0.6Pw2=0.4%求第一类点的均值向量 m1m1*=mean(*1(:))%全部平均 m1y=mean(y1(:))%全部平均 m1z=mean(z1(:))%全部平均 m1=[m1*

  m1y

  m1z]%求第二类点的均值向量 m2m2*=mean(*2(:))%全部平均 m2y=mean(y2(:))%全部平均 m2z=mean(z2(:))%全部平均 m2=[m2*

  m2y

  m2z]%求第一类类内离散矩阵 S1S1=zeros(3,3)fori=1:36

  S1=S1+([*1(i),y1(i),z1(i)]'-m1)*([*1(i),y1(i),z1(i)]'-m1)'end%求第二类类内离散矩阵 S2S2=zeros(3,3)fori=1:36

  S2=S2+([*2(i),y2(i),z2(i)]'-m2)*([*2(i),y2(i),z2(i)]'-m2)'end%求总类内离散度矩阵 SwSw=S1+S2%求向量 W*W=(inv(Sw))*(m1-m2)%画出决策面

 *=0:.1:2.5y=0:.1:3[*,Y]=meshgrid(*,y)Z=(W(1)**+W(2)*Y)/(-W(3))mesh(*,Y,Z)%保持 holdon%透视决策面 hiddenoff%求第一类样品的投影值均值Y1=0fori=1:36

  Y1=Y1+W'*[*1(i),y1(i),z1(i)]'endM1=Y1/36%求第二类样品的投影值均值Y2=0fori=1:36

  Y2=Y2+W'*[*2(i),y2(i),z2(i)]'endM2=Y2/36%选取阈值Y0Y0=(M1+M2)/2+(log(Pw1)/log(Pw2))/70%判定未知样品类别 Y0

  disp('点*1(1,1.5,0.6)属于第一类')

  plot3(1,0.5,0.6,'or')else

  disp('点*1(1,1.5,0.6)属于第二类 Y0

  disp('点*2(1.2,1.0,0.55)属于第一类')

  plot3(1.2,1.0,0.55,'or')else

  disp('点*2(1.2,1.0,0.55)属于第二类 Y0

  disp('点*3(2.0,0.9,0.68)属于第一类')

  plot3(2.0,0.9,0.68,'or')else

  disp('点*3(2.0,0.9,0.68)属于第二类 Y0

  disp('点*4(1.2,1.5,0.89)属于第一类')

  plot3(1.2,1.5,0.89,'or')else

  disp('点*4(1.2,1.5,0.89)属于第二类 Y0

  disp('点*5(0.23,2.33,1.43)属于第一类')

  plot3(0.23,2.33,1.43,'or')else

  disp('点*5(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 样本点分类*1=

  1.0000

  1.5000

  0.6000

  点*1(1,1.5,0.6)属于第一类

  *2=

  1.2000

  1.0000

  0.5500

  点*2(1.2,1.0,0.55)属于第二类

  *3=

  2.0000

  0.9000

  0.6800

  点*3(2.0,0.9,0.68)属于第二类

  *4=

  1.2000

  1.5000

 0.8900

  点*4(1.2,1.5,0.89)属于第二类

  *5=

  0.2300

  2.3300

  1.4300

  点*5(0.23,2.33,1.43)属于第一类八、实验分析 1、比例因子决策面向量 W 的比例因子并不影响判别函数。分析如下:

  阈值:

  判别函数:

  可以证明,Y0 与 WT 有关,所以当改变 WT 时,判别函数两边同时改变,所以WT 并不影响判别函数。

  2、语法障碍由于之前不怎么接触 matlab,所以此次实验做得比较漫长。为了方便程序进行矩阵的运算,我把原始数据由矩阵转化成一维向量,后面的求和运算相应的转化为循环结构实现。

推荐访问:线性 准则 实验