《线性分类器》由会员分享,可在线阅读,更多相关《线性分类器(11页珍藏版)》请在金锄头文库上搜索。
1、实验报告实验内容线性分类器设计实验姓名*单位*学号*实验环境MATLAB实验时间*年*月*日一实验目的:1、掌握Fisher线性分类器设计方法;2、掌握感知准则函数分类器设计方法。二实验内容:1、对下列两种情况,求采用 Fisher 判决准则时的投影向量和分类界 面,并做图。=(2,0) t ,(2,2)t ,(2,4)t ,(3,3) t V 1 (0,3) T,(2,2)T,(1,1)T ,(1,2)t ,(3, 1)t 2 (1,iy,(2,0) T,(2,1)T,(0, 2)t,(1,3)tVI =(1,2)t ,(0,0) T,(1,0)T,(1,1)t ,(0, 2)T22、对下面
2、的两类分类问题,采用感知准则函数,利用迭代修正求权 向量的方法求两类的线性判决函数及线性识别界面,并画出识别界面 将训练样本区分的结果图。 = (l,iy,(2,0) T,(2,1)T,(o, 2)t,(1,3)tv l (1,2)t ,(0,0) t ,(1,0)t ,(1,1)t ,(0, 2)t 2三实验原理1. Fisher 线性判决函数为J (o)=咤FOtS o分子反映了映射后两类的类间离散度,该值越大可分性越好;分母反映了两类的类内离散度,该值越小越好。即最佳分类为使J (o )F 值达到最大。2. 感知准则函数为J (v) Y (VTZ)PzZk当且仅当错分样本集Zk为空时,J
3、 (V) - 0,即J (v) m () CJ v -,P P P这时将不存在错分样本,而V *将是我们要寻找的解向量。四实验结果及分析Fisher线性分类器1. 数据分为两组,分别计算每组两类样本的均值向量。第一组样本的均值向量为卩和p,第二组样本的均值向量为p和11 12 21p 。 计 算 得 到 p =2.2500 2.2500 , p =0.2000 0.2000,22 11 12p =1.2000 1.4000, p =-0.6000 -0.2000。21 222. 计算类内离散度矩阵和总类内离散度矩阵。设两组样本总类内度为siw和如。可得到siw=;4500 ;7.55004-4
4、s2w =。-4 143. 计算两组样本一维空间均值。设第一组样本一维空间均值为 y 和 y ,第二组样本一维空间均值11 12为 y 和 y 。经过计算得到 y =0.7174 , y =0.0638 , y =1.4240 , 21 22 11 12 21y =-0.5420 。224.计算最优投影方向w*经过计算得到两组样本最优投影方向 w1=0.1924 0.1264, w2=0.7900 0.3400 。5. 分类。根据分类函数y二(w*)t x - y,在投影空间选择判决阈值0y 0二丄(|! + |!),若y y 0,贝Ux gw,否则x gw得到分类结果。分类 2 1 2 1
5、2图如图 1 和图 2所示。图2 第二组样本分类情况6. 测试分类器随机取样,测试分类器的分类结果,如图3 中紫色样本所示:图 3 测试分类器得到结果为:样本属于第一类,符合要求。感知准则函数分类器1. 增广化和规范化。得到样本数据后,对其进行增广化处理,变成增广化样本向量。 另外,对第二类所有样本都加上一个负号,第一类所有样本不变 使其变成规范化增广样本向量 z 。i2.寻找解向量v。设定步长p =1为固定值,初始权向量v=z,迭代次数为10次。利k1用感知准则,沿着负梯度方向进行迭代:v(k +1) = v(k) + p工z。迭kz=Zk代过程中进行分类判断,如果样本全部正确分类,停止迭代
6、;否则继续。迭代后,样本能够全部正确分类,得到解向量vT= 2 5 2。3. 绘制分界面。按照判决函数g(z )二vtz利用Matlab符号函数绘制分界面如图4图4 感知准则函数分类器( pk = 1 , v=z1)4. 错误个数。实验最后测定得到的分类器对样本的错分个数为 0,即全部分类正 确。5. 改变参数。改变步长,使p =2,初始向量v=z不变,再次进行分类,得到解k11k得到分类错误个数为 0。改变初始向量v=z,步长p =1不变,再次实验,得到vt=一1 3 2 2k分类结果如图 6 所示。k2得到分类错误个数为 0。五实验代码Fisher 线性分类器程序代码如下:%Fisher
7、线性分类器% 样本数据clearall;closeall;clc;w11=2,0;2,2;2,4;3,3; %第一组数据第一类样本 w12=0,3;-2,2;-1,-1;1,-2;3,-1;%第一组数据第二类样本w21=1,1;2,0;2,1;0,2;1,3;w22=-1,2;0,0;-1,0;-1,-1;0,-2;% 类内离散度等参数计算u11=mean(w11,1);%第一类样本均值向量u12=mean(w12,1);%第二类样本均值向量u21=mean(w21,1);u22=mean(w22,1);m11,n11=size(w11); %第一类样本维度 m12,n12=size(w12)
8、;s11=0;%类内离散度fori=1:m11s11=s11+(w11(i,:)-u11)*(w11(i,:)-u11);end s12=0;s21=0;s22=0; fori=1:m12s12=s12+(w12(i,:)-u12)*(w12(i,:)-u12); s21=s21+(w21(i,:)-u21)*(w21(i,:)-u21); s22=s22+(w22(i,:)-u22)*(w22(i,:)-u22);end s1w=s11+s12;%第一组总类内离散度w1=inv(s1w)*(u11-u12);%最佳映射方向y11=w1*u11;y12=w1*u12;y01=(y11+y12)
9、/2; %一维均值 s2w=s21+s22;%第二组总类内离散度w2=inv(s2w)*(u21-u22);%最佳映射方向y21=w2*u21;y22=w2*u22;y02=(y21+y22)/2; %一维均值 % 画图 syms x1 x2 ty1=w1(1)*x2-w1(2)*x1;ty2=w2(1)*x2-w2(2)*x1; f1=w1*x1 x2-y01; f2=w2*x1 x2-y02;figure(1); plot(w11(:,1),w11(:,2),r+);hold on;plot(w12(:,1),w12(:,2),bo); ezplot(f1);ezplot(ty1);hol
10、d off;axis(equal);text(-3,5,分界面);text(-6,-4,投影线);legend(样本 1,样本 2);xlabel(xl);ylabel(x2);title(第一组样本分布情况); figure(2);plot(w21(:,1),w21(:,2),r+);hold on; plot(w22(:,1),w22(:,2),bo);ezplot(f2);ezplot(ty2);axis(equal); text(-3,5,分界面);text(-6,-3,投影线); legend(样本 1,样本 2);xlabel(x1);ylabel(x2);title(第二组样本分
11、布情况);% 测试分类器fori=1:10 x,y=ginput(1);plot(x,y,m*); sample=x,y;hold allif(sample*w2-y020) disp(样本属于第一类);elsedisp(样本属于第二类);end;end感知准则函数分类器程序代码如下:% 感知准则函数% 样本数据增广化规范化 clearall;closeall;clc; w1=1,1;2,0;2,1;0,2;1,3; w2=-1,2;0,0;-1,0;-1,-1;0,-2; a=ones(5,1);y1=cat(2,a,w1);%增广化y2=cat(2,a,w2);y2=-y2;%规范化z=c
12、at(1,y1,y2);m,n=size(z);% 寻找解向量p=1;%步长v=z(2,:); %初始向量q=10; %迭代次数 10 次fori=1:qe=zeros(m,n); %错误矩阵,存储分类错误向量for j=1:m%找出错分样本if (z(j,:)*v0) e(j,:)=z(j,:); end endif all(all(e=0)%若全分类正确break;%跳出循环,迭代结束elses=sum(e,1);%负梯度方向,所有错分相加v=v+p*s;%迭代endend% 绘图figure(1); plot(w1(:,1),w1(:,2),r+);hold on; plot(w2(:,1),w2(:,2),ko);hold on;syms x1 x2f1=1 x1 x2*v;ezplot(fl); hold off;text(-2,6,分界面);xlabel(xl);ylabel(x2);title(感知准则分类器); legend(第一类,第二类,分界面);cuowu=0;%记录错分个数fori=l:mif z(i,:)*v0cuowu=cuowu+l;endend