文档详情

MATLAB(感知器算法).doc

发布:2016-11-28约2.63千字共4页下载文档
文本预览下载声明
感知器算法 本算法中,首先将第一类训练样本w1和第二类训练样本w2都写成增广矩阵的形式。 W2中的样本都要乘以(-1),所以处理之后的结果为y1~y8。 题中给定的权向量初始值W(1)记为X,校正增量系数c=1。 程序主体用for循环进行迭代,对每一个样本进行计算y1*X,结果=0时 X=X+c*y1进行校正,结果0时,权向量保持不变,计算个数j+1,每一轮迭代需要与全部8个样本进行计算。当全部样本计算结果0(即某一轮迭代中0的个数j达到8)时,计算中断,表示该轮迭代中分类结果全部正确。此时可以输出解向量,并且可以表示出相应的判别函数。 本算法迭代结束时,可得出解向量为(3,-2,-3,1),判别函数为d=3*x1-2*x2-3*x3+1,判别界面即为d=0时。绘制该判别界面时,令d=0,则x3=-Y(1).*x1/Y(3)-Y(2).*x2/Y(3)-Y(4)/Y(3); 根据所得解向量进行验证当解向量为(3,-2,-3,1)时全部判别函数值0,可知分类结果正确。 本题判别界面的绘制和算法程序如下: syms x1 x2 x3 x4 d; X1=[0,0,0];X2=[1,0,0];X3=[1,0,1];X4=[1,1,0];X5=[0,0,1];X6=[0,1,1];X7=[0,1,0];X8=[1,1,1]; y1=[X1,1];y2=[X2,1];y3=[X3,1];y4=[X4,1];y5=[-X5,-1];y6=[-X6,-1];y7=[-X7,-1];y8=[-X8,-1]; c=1;X=[-1;-2;-2;0]; i=1;j=0; for i=1:1000 if(y1*X=0) X=X+c*y1; j=0; else j=j+1; end if(j==8) break; end if(y2*X=0) X=X+c*y2; j=0; else j=j+1; end if(j==8) break; end if(y3*X=0) X=X+c*y3; j=0; else j=j+1; end if(j==8) break; end if(y4*X=0) X=X+c*y4; j=0; else j=j+1; end if(j==8) break; end if(y5*X=0) X=X+c*y5; j=0; else j=j+1; end if(j==8) break; end if(y6*X=0) X=X+c*y6; j=0; else j=j+1; end if(j==8) break; end if(y7*X=0) X=X+c*y7; j=0; else j=j+1; end if(j==8) break; end if(y8*X=0) X=X+c*y8; j=0; else j=j+1; end if(j==8) break;
显示全部
相似文档