机器学习实验1-Fisher线性分类器设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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等课件帮助,我最终完成了实验,为今后继续深入学习打下良好基础。