感知器算法试验-1
一一. .实验目的实验目的 1.理解线性分类器的分类原理。 2.掌握感知器算法,利用它对输入的数据进行分类。 3.理解 BP 算法,使用 BP 算法对输入数据进行分类。 二二. . 实验原理实验原理 1.感知器算法 感知器算法是通过训练模式的迭代和学习算法, 产生线性可分的模式判别函数。 感知器 算法就是通过对训练模式样本集的“学习”得出判别函数的系数解。在本次实验中,我们主 要是采用硬限幅函数进行分类。 感知器的训练算法如下: 设输入矢量{x1,x2,…,xn}其中每一个模式类别已知,它们分别属于ω1 类和ω2 类。 (1)置步数 k=1,令增量 ρ 为某正的常数,分别赋给初始增广权矢量w(1)的各分量较 小的任意值。 (2)输入训练模式xk,计算判别函数值wT(k)x k。 (3)调整增广权矢量,规则是: a.如果xk∈ω1 和wT(k)x k ≤0,则 w(k+1)=w(k)+ ρxk; b.如果xk∈ω2 和wT(k)x k ≥0,则 w(k+1)=w(k)-ρxk; c.如果xk∈ω1 和wT(k)x k 0,或xk∈ω2 和wT(k)x k 0) else fprintf( 第%d 个数据被分为 第一类,分类错误\n ,i); end end if(W*k(i,:) m k=1; end if mod(k,2)==1 g1=x2(k,:); d=0.1; end if mod(k,2)==0 g1=x3(k,:); d=0.9; end g2=g1*w1; o1=1./(1+exp(-g2)); o1_y=[o1 -1]; g3=o1_y*w2; o2=1./(1+exp(-g3)); % 输出层的权系数调整 det2=a*2*(d-o2)*o2*(1-o2)*o1_y; w2=w2+det2 ; s=2*(d-o2)*o2*(1-o2); %第一层的权系数调整 w22=w2 ; det1=a*g1 *(s*w22(:,1:5).*o1.*(1-o1)); w1=w1+det1; err=d-o2; pf=err^2; k=k+1; tt=tt+1;%训练次数 end r1=0;r2=0; for j=1:1:50 t1=k2(j,:)*w1; y1=1./(1+exp(-t1)); y1_y=[y1 -1]; I2=y1_y*w2; y2(j)=1./(1+exp(-I2)); if y2(j)0.5 r2=r2+1; end end lv2=r2/50 if r2==50 r22=r22+1; end p=p+1 end r11/50 r22/50 plot([1:50],y2, r ); axis([0,50,0,1]); title([ m= ,num2str(m)]); hold on plot([1:50],y22); grid on lv=(r11+r22)/100