模式识别 - 感知器准则与Fisher算法实验(2)

2019-08-26 18:25

2.Fisher准则

下面表样本数据中的类别ω1 和ω2 计算最优方向 W。画出最优方向 W的直线,并标记出投影后的点在直线上的位置。

【源程序:】

function fisher %w1中数据点的坐标

x1 =[-0.4 -0.31 -0.38 -0.15 -0.35 0.17 -0.011 -0.27 -0.065 -0.12]; x2 =[0.58 0.27 0.055 0.53 0.47 0.69 0.55 0.61 0.49 0.054];

x3 =[0.089 -0.04 -0.035 0011 0.034 0.1 -0.18 0.12 0.0012 -0.063];

%将x1、x2、x3变为行向量 x1=x1(:); x2=x2(:); x3=x3(:);

%计算第一类的样本均值向量m1 m1(1)=mean(x1); m1(2)=mean(x2); m1(3)=mean(x3);

%计算第一类样本类内离散度矩阵S1 S1=zeros(3,3); for i=1:10

S1=S1+[-m1(1)+x1(i) -m1(2)+x2(i) -m1(3)+x3(i)]'*[-m1(1)+x1(i) -m1(2)+x2(i) -m1(3)+x3(i)]; end

%w2的数据点坐标

x4 =[0.83 1.1 -0.44 0.047 0.28 -0.39 0.34 -0.3 1.1 0.18]; x5 =[1.6 1.6 -0.41 -0.45 0.35 -0.48 -0.079 -0.22 1.2 -0.11]; x6 =[-0.014 0.48 0.32 1.4 3.1 0.11 0.14 2.2 -0.46 -0.49];

6

x4=x4(:); x5=x5(:); x6=x6(:);

%计算第二类的样本均值向量m2 m2(1)=mean(x4); m2(2)=mean(x5); m2(3)=mean(x6);

%计算第二类样本类内离散度矩阵S2 S2=zeros(3,3); for i=1:10

S2=S2+[-m2(1)+x4(i) -m2(2)+x5(i) -m2(3)+x6(i)]'*[-m2(1)+x4(i) -m2(2)+x5(i) -m2(3)+x6(i)]; end

%总类内离散度矩阵Sw Sw=zeros(3,3); Sw=S1+S2;

%样本类间离散度矩阵Sb Sb=zeros(3,3);

Sb=(m1-m2)'*(m1-m2); %最优解W

W=Sw^-1*(m1-m2)'

%将W变为单位向量以方便计算投影 W=W/sqrt(sum(W.^2));

%计算一维Y空间中的各类样本均值M1及M2 for i=1:10

y(i)=W'*[x1(i) x2(i) x3(i)]'; end

M1=mean(y) for i=1:10

y(i)=W'*[x4(i) x5(i) x6(i)]'; end

M2=mean(y)

%利用当P(w1)与P(w2)已知时的公式计算W0 p1=0.6;p2=0.4;

W0=-(M1+M2)/2+(log(p2/p1))/(10+10-2); %计算将样本投影到最佳方向上以后的新坐标 X1=[x1*W(1)+x2*W(2)+x3*W(3)]';

X2=[x4*W(1)+x5*W(2)+x6*W(3)]';%得到投影长度 XX1=[-0.7,0.58,0.089];

XX2=[0.047,-0.4,1.04];%得到新坐标 %绘制样本点 figure(1)

7

plot3(x1,x2,x3,'r*') %第一类 hold on

plot3(x4,x5,x6,'bp') %第二类 legend('第一类点','第二类点') title('Fisher线性判别曲线') W1=5*W;

%画出最佳方向

line([-W1(1),W1(1)],[-W1(2),W1(2)],[-W1(3),W1(3)],'color','b'); %判别已给点的分类

a1=[1,1.5,0.6]';a2=[1.2,1.0,0.55]';a3=[2.0,0.9,0.68]';a4=[1.2,1.5,0.89]';a5=[0.23,2.33,1.43]'; A=[a1 a2 a3 a4 a5]

n=size(A,2); %下面代码在改变样本时都不必修改

%绘制待测数据投影到最佳方向上的点 for k=1:n A1=A(:,k)'*W;

A11=W*A1;%得到待测数据投影

y=W'*A(:,k)+W0;%计算后与0相比以判断类别,大于0为第一类,小于0为第二类 if y>0

plot3(A(1,k),A(2,k),A(3,k),'go'); %点为\对应第一类 plot3(A11(1),A11(2),A11(3),'go'); %投影为\对应go类 else

plot3(A(1,k),A(2,k),A(3,k),'m+'); %点为\对应m+类 plot3(A11(1),A11(2),A11(3),'m+'); %投影为\对应m+类 end end

%画出最佳方向

line([-W1(1),W1(1)],[-W1(2),W1(2)],[-W1(3),W1(3)],'color','k'); view([-37.5,30]);

axis([-2,3,-1,3,-0.5,1.5]); grid on hold off

【实验结果:】

8

【实验分析】

W的比例因子对于Fisher判别函数没有影响的原因:

在本实验中,最需要是在此方向上数据的投影,那么W的比例因子,即它是单位向量的多少倍长就无关紧要了。

9


模式识别 - 感知器准则与Fisher算法实验(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:填空与选择

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: