机器学习实验1-Fisher线性分类器设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、实验意义及目的

掌握Fisher分类原理,能够利用Matlab编程实现Fisher线性分类器设计,

熟悉基于Matlab算法处理函数,并能够利用算法解决简单问题。

二、算法原理

Fisher准则基本原理:找到一个最合适的投影周,使两类样本在该轴上投影之间的距离尽可能远,而每一类样本的投影尽可能紧凑,从而使分类效果为最佳。

内容:

(1)尝试编写matlab程序,用Fisher线性判别方法对三维数据求最优方向w的通用函数(2)对下面表1-1样本数据中的类别w1和w2计算最优方向w

(3)画出最优方向w 的直线,并标记出投影后的点在直线上的位置

(4)选择决策边界,实现新样本xx1=(-0.7,0.58,0.089),xx2=(0.047,-0.4,1.04)的分类

三、实验内容

(1)尝试编写matlab程序,用Fisher线性判别方法对三维数据求最优方向w的通用函数程序清单:

clc

clear all

%10*3样本数据

w1=[-0.4,0.58,0.089;-0.31,0.27,-0.04;-0.38,0.055,-0.035;-0.15,0.53,0.011;-

0.35,.47,0.034;0.17,0.69,0.1;-0.011,0.55,-0.18;-0.27,0.61,0.12;-0.065,0.49,0.0012;-

0.12,0.054,-0.063];

w2=[0.83,1.6,-0.014;1.1,1.6,0.48;-0.44,-0.41,0.32;0.047,-0.45,1.4;0.28,0.35,3.1;-

0.39,-0.48,0.11;0.34,-0.079,0.14;-0.3,-0.22,2.2;1.1,1.2,-0.46;0.18,-0.11,-0.49];

W1=w1';%转置下方便后面求s1

W2=w2';

m1=mean(w1);%对w1每一列取平均值结果为1*3矩阵

m2=mean(w2);%对w1每一列取平均值结果为1*3矩阵

S1=zeros(3);%有三个特征所以大小为3

S2=zeros(3);

for i=1:10%1到样本数量n

s1=(W1(:,i)-m1)*(W1(:,i)-m1)';

s2=(W2(:,i)-m2)*(W2(:,i)-m2)';

S1=S1+s1;

S2=S2+s2;

end

sw=S1+S2;

w_new=transpose(inv(sw)*(m1'-m2'));%这里m1m2是行要转置下3*3 X 3*1 =3*1 这里提前转置了下跟老师ppt解法公式其实一样

%绘制拟合结果数据画图用

y1=w_new*W1

y2=w_new*W2;

m1_new=w_new*m1';%求各样本均值也就是上面y1的均值

m2_new=w_new*m2';

w0=(m1_new+m2_new)/2%取阈值

%分类判断

x=[-0.7 0.047

0.58 -0.4

0.089 1.04 ];

m=0; n=0;

result1=[]; result2=[];

for i=1:2%对待观测数据进行投影计算

y(i)=w_new*x(:,i);

if y(i)>w0

m=m+1;

result1(:,m)=x(:,i);

else

n=n+1;

result2(:,n)=x(:,i);

end

end

%结果显示

display('属于第一类的点')

result1

display('属于第二类的点')

result2

figure(1)

scatter3(w1(1,:),w1(2,:),w1(3,:),'+r'),hold on

scatter3(w2(1,:),w2(2,:),w2(3,:),'sg'),hold on

scatter3(result1(1,:),result1(2,:),result1(3,:),'k'),hold on

scatter3(result2(1,:),result2(2,:),result2(3,:),'bd')

title('样本点及实验点的空间分布图')

legend('样本点w1','样本点w2','属于第一类的实验点','属于第二类的实验点')

figure(2)

title('样本拟合结果')

scatter3(y1*w_new(1),y1*w_new(2),y1*w_new(3),'b'),hold on

scatter3(y2*w_new(1),y2*w_new(2),y2*w_new(3),'sr')

(2)对下面表1-1样本数据中的类别w1和w2计算最优方向w

(3)画出最优方向w 的直线,并标记出投影后的点在直线上的位置

最优方向w 的直线

投影后的位置

(4)选择决策边界,实现新样本xx1=(-0.7,0.58,0.089),xx2=(0.047,-0.4,1.04)的分类

决策边界取法:

分类结果:

四、实验感想

通过这次实验,我学会了fisher线性判别相关的分类方法,对数据分类有了初步的认识,尽管在过程中有不少中间量不会算,通过查阅网络知识以及模式识别专业课ppt等课件帮助,我最终完成了实验,为今后继续深入学习打下良好基础。

相关文档
最新文档