Fisher线性判别实验_精品文档.doc
《Fisher线性判别实验_精品文档.doc》由会员分享,可在线阅读,更多相关《Fisher线性判别实验_精品文档.doc(6页珍藏版)》请在冰豆网上搜索。
Fisher线性判别实验
一、实验目的
(1)加深对Fisher线性判别的基本思想的认识和理解;
(2)编写实现Fisher线性判别准则函数的程序。
二、实验原理
1.线性投影与Fisher准则函数
在两类问题中,假定有个训练样本其中个样本来自类型,个样本来自类型,。
两个类型的训练样本分别构成训练样本的子集和。
令:
,
是向量通过变换得到的标量,它是一维的。
实际上,对于给定的,就是判决函数的值。
由子集和的样本映射后的两个子集为和。
因为我们关心的是的方向,可以令,那么就是在方向上的投影。
使和最容易区分开的方向正是区分超平面的法线方向。
2.如何得到最佳方向的解析式
各类在维特征空间里的样本均值向量:
,
通过变换映射到一维特征空间后,各类的平均值为:
,
映射后,各类样本“类内离散度”定义为:
,
显然,我们希望在映射之后,两类的平均值之间的距离越大越好,而各类的样本类内离散度越小越好。
因此,定义Fisher准则函数:
使最大的解就是最佳解向量,也就是Fisher的线性判别式。
三、实验内容
依据实验基本原理和基本方法,对实验样本数据中的类别ω1和ω2计算最优方向,画出最优方向的直线,并标记出投影后的点在直线上的位置。
选择决策边界,实现新样本xx1=(-0.7,0.58,0.089),xx2=(0.047,-0.4,1.04)的分类。
最优方向分别通过课本64页公式(4-26)和公式(4-28)两种方法求解。
(4-26)(4-28)
四、实验过程
1.输入数据
clc;clearall;
w1=[-0.40.580.089;-0.310.27-0.04;-0.380.055-0.035;-0.150.530.011;-0.350.470.034;0.170.690.1;-0.0110.55-0.18;-0.270.610.12;-0.0650.490.0012;-0.120.054-0.063];
w2=[0.831.6-0.014;1.11.60.48;-0.44-0.410.32;0.047-0.451.4;0.280.353.1;-0.39-0.480.11;0.34-0.0790.14;-0.3-0.222.2;1.11.2-0.46;0.18-0.11-0.49];
xx=[-0.70.580.089;0.047-0.41.04];
2.求w1的均值、w2的均值以及sw,最后可得到最佳投影方向
p=zeros(1,3);
fori=1:
10
q=w1(i,:
);
p=q+p;
end
m1=p/10;
m11=m1';%得到w1的均值
p=zeros(1,3);
fori=1:
10
q=w2(i,:
);
p=q+p;
end
m2=p/10;
m22=m2';%得到w2的均值
p1=zeros(3,3);
fori=1:
10
q=w1(i,:
);
q11=q';
s=q11-m11;
ss=s';
s1=s*ss;
p1=s1+p1;
end
p2=zeros(3,3);
fori=1:
10
q=w2(i,:
);
q22=q';
s=q22-m22;
ss=s';
s2=s*ss;
p2=s2+p2;
end
sw=p1+p2;%计算sw
sw1=inv(sw);
W=sw1*(m11-m22);%得到最优投影方向
3.画出样本点的空间分布及xx1和xx2的空间分布及投影方向
wx1=W'*xx(1,:
)';
wx2=W'*xx(2,:
)';
wx11=wx1*W;
wx22=wx2*W;
figure;
plot3(w1(:
1),w1(:
2),w1(:
3),'r*');
holdon;
gridon;
plot3(w2(:
1),w2(:
2),w2(:
3),'g*');
x=-pi:
0.01:
pi;
y=W(2,1)/W(1,1)*x;
z=W(3,1)/W(1,1)*x;
plot3(x,y,z,'b');
holdon;
plot3(xx(1,1),xx(1,2),xx(1,3),'k*');
holdon;
plot3(xx(2,1),xx(2,2),xx(2,3),'c*');
holdon;
plot3(wx11
(1),wx11
(2),wx11(3),'k*');
holdon;
plot3(wx22
(1),wx22
(2),wx22(3),'c*');
4.得到样本点在最优方向上的投影
%关于如何设计样本点的投影可用for循环
figure;
x=-pi:
0.01:
pi;
y=W(2,1)/W(1,1)*x;
z=W(3,1)/W(1,1)*x;
plot3(x,y,z,'b');
holdon;
gridon;
fori=1:
10
wp1=W'*w1(i,:
)';
wp11=wp1*W;
holdon;
plot3(wp11
(1),wp11
(2),wp11(3),'k*');
end
holdon;
gridon;
fori=1:
10
wp2=W'*w2(i,:
)';
wp22=wp2*W;
holdon;
plot3(wp22
(1),wp22
(2),wp22(3),'r*');
end
5.判断xx1与xx2的分类
w0=-(W'*m11+W'*m22);
fori=1:
2
x=xx(i,:
)';
gg=W'*x+w0;
ifgg>0
disp(sprintf('属于w1'));
else
disp(sprintf('属于w2'));%关于如何显示的问题
end
End
6.用公式(4.26)进行验证结果
%(4.26)----------------
sb=(m11-m22)*(m11-m22)';
[v,d]=eig(sw1*sb);
w=v(:
1);
wp=sqrt(W'*W);
ww1=[W(1,1)/wp,W(2,1)/wp,W(3,1)/wp,];
五、实验结果及分析
1.公式(4.28)得到的最优投影方向W=[-0.76120.4538-0.0938]’;单位化后ww1=[-0.85420.5092-0.1052]’;
公式(4.26)得到的最优投影方向w=[0.8542-0.50920.1052]’;
可知,这两种方法得到的结果相差一个负号,都能正确得出最优方向。
2.样本点的空间分布及投影方向
由图中可看出,该投影方向能够较好的区分这两类样本。
3.xx1与xx2结果判定:
xx1属于w1,xx2属于w2。