模式识别第三章-感知器算法
模式识别第三章
珀塞普顿
一.用感知器算法求以下模式分类的解向量w。
属于的训练样本乘以(-1 ),写成扩展向量的形式:
、
、
第一次迭代:取
因为不大于0
因为大于0
因为大于0
因为大于0
因为不大于0
因为大于0
因为不大于0
因为大于0
第二次迭代:
因为不大于0
因为不大于0
因为大于0
因为大于0
因为不大于0
因为大于0
因为大于0
因为大于0
第三次迭代:
因为不大于0
因为大于0
因为不大于0
因为大于0
因为不大于0
因为大于0
因为不大于0
因为大于0
第四次迭代:
因为不大于0
因为大于0
因为大于0
因为大于0
因为大于0
因为大于0
因为大于0
因为大于0
第五次迭代:
因为大于0
因为大于0
因为大于0
因为大于0
因为大于0
因为大于0
因为大于0
因为大于0
由于所有此循环迭代都是正确的,因此求解向量,相应的判别函数如下:
编制解决上述问题的感知器算法程序
实验结果的截图
程序代码
%程序功能:实现感知器算法
%作者: lyrjb母机电话号码
%时间: 2014.10.5
clc;
清除全部;
fprintf '感知器算法n ';
%输入模式示例
x [ 0,0,0,1; 1,0,0,1; 1,0,1,1; 1,1,0,1; 0,0,-1,-1; 0、-1、-1、-1; 0、-1、0、-1; -1、-1、-1、-1);
[N,n] size x; %获取样本数和维数n是样本数; n是样本维度
C 1;
w0 [ 0,0,0,0 ] '; %解向量初始化
w w0;
flag 1; %迭代持续标志,迭代全部正确时为flag 0,迭代结束
k 0; 记录%反复次数
while标志标志0; k1; for i 1:N if w'*x i, ' 0%重复错误,w对应的xwxI, '; flag 1; 结束结束
结束
fprintf '重复次数%dn ',k;
fprintf '解向量为w ';
for j 1:n fprintf '%d ',w j;
结束
fprintf ' n ';
与fprintf '对应的判别函数为d x ';
for j 1:n-1 fprintf ' %d x%d ',w j,j;
结束
fprintf ' %d n ',w j;