模式识别第三章 感知器算法
T
因 (13) x5 (1,1,1,1)(0,0,-1,1) 0 不大于 0,故 (14) (13) x5 (1,1,2,0)
T T
T
因 (14) x6 (1,1,2,0)(0,-1,-1,1) 3 大于 0,故 (15) (14) (1,1,2,0)
T T T
T
因大于 0,故 (33) (32) ( 2,-2,-2,1) 第五轮迭代:
T
因 (33) x1 ( 2,2,-2,1)(0,0,0,1) 1 大于 0,故 (34) (33) ( 2,2,2,1)
T T
T
因 (34) x2 ( 2,-2,-2,1)(1,0,0,1) 3 大于 0,故 (35) (34) ( 2,2,2,1)
fprintf('%d ',w(j));
fprintf(')\n');
fprintf('相应的判别函数为d(x)='); for j=1:n-1 end fprintf('(%d)x%d+',w(j),j);
fprintf('(%d)\n',w(j));
模式识别第三章
感知器算法
一.用感知器算法求下列模式分类的解向量 w:
1 : {(0,0,0)T , (1,0,0)T , (1,0,1)T , (1,1,0)T } 2 : {(0,0,1)T , (0,1,1)T , (0,1,0)T , (1,1,1)T }
将属于 2 的训练样本乘以(-1) ,并写成增广向量的形式:
T T T
T
因 (3) x3 (0,0,0,1)(1,0,1,1) 1 大于 0,故 ( 4) (3) (0,0,0,1)
T T T T
T
因 ( 4) x4 (0,0,0,1)(1,1,0,1) 1 大于 0,故 (5) ( 4) (0,0,0,1)
T
因 T (37) x5 (2,2,2,1)(0,0,-1,1)T 1 大于 0,故 (38) (37) ( 2,2,2,1)
T T
T
因 (38) x6 ( 2,2,2,1)(0,-1,-1,1) 3 大于 0,故 (39) (38) ( 2,2,2,1) 因 (39) x7 ( 2,2,2,1)(0,-1,0,1) 1 大于 0,故 ( 40) (39) ( 2,-2,-2,1)
第一轮迭代:取 C 1 , (1) (0,0,0,0)
T T T
因 (1) x1 (0,0,0,0)(0,0,0,1) 0 不大于 0,故 ( 2) (1) x1 (0,0,0,1) 因 ( 2) x2 (0,0,0,1)(1,0,0,1) 1 大于 0,故 (3) ( 2) (0,0,0,13 ( 2,2,2,1)(1,0,1,1) 1 大于 0,故 (36) (35) ( 2,2,2,1)
T T
T
因 (36) x4 ( 2,2,2,1)(1,1,0,1) 1 大于 0,故 (37) (36) ( 2,2,2,1)
T
因 (17) x1 (1,1,-2,0)(0,0,0,1) 0 不大于 0,故 (18) (17) x1 (1,1,2,1)
T T
T
因 (18) x2 (1,-1,-2,1)(1,0,0,1) 2 大于 0,故 (19) (18) (1,1,2,1)
T T
T
因 (15) x7 (1,1,2,0)(0,-1,0,1) 1 大于 0,故 (16) (15) (1,-1,-2,0)
T T T T
T
因 (16) x8 (1,-1,-2,0)(-1,-1,-1,1) 2 大于 0,故 (17) (16) (1,-1,-2,0) 第三轮迭代:
T T T
T
因 ( 40) x8 ( 2,-2,-2,1)(-1,-1,-1,1) 1 大于 0,故 ( 41) ( 40) ( 2,-2,-2,1)
T T
T
该轮迭代全部正确,因此解向量 ( 2,2,2,1) ,相应的判别函数为:
T
d ( x) 2 x1 2 x2 2 x3 1
flag=1;%迭代继续标志,当迭代全部正确时,flag=0,迭代结束
flag=0; k=k+1; for i=1:N
if w'*x(i,:)'<=0%当迭代错误,w加上相应的x w=w+x(i,:)'; end flag=1;
end
end
fprintf('迭代次数%d\n',k); fprintf('解向量为w=('); for j=1:n end
T T T
T
第二轮迭代: 因 (9) x1 (0,1,-1,-1)(0,0,0,1) 1 不大于 0,故 (10) (9) x1 (0,1,-1,0)
T T T
因 (10) x2 (0,-1,-1,0)(1,0,0,1) 0 不大于 0,故 (11) (10) x2 (1,1,1,1)
x1 (0,0,0 ,1)T , x2 (1,0,0,1)T , x3 (1,0,1,1)T , x4 (1,1,0 ,1)T x5 (0,0,-1,1)T , x6 (0,-1,-1,1)T , x7 (0,-1,0,1)T , x8 (-1,-1,-1,1)T
T T T T
T
因 (19) x3 (1,1,2,1)(1,0,1,1) 0 不大于 0,故 ( 20) (19) x3 ( 2,1,1,2) 因 ( 20) x4 ( 2,1,1,2)(1,1,0,1) 3 大于 0,故 ( 21) ( 20) ( 2,1,1,2)
T T
T
因 (5) x5 (0,0,0,1)(0,0,-1,1) 1 不大于 0,故 (6) (5) x5 (0,0,-1,0) 因 (6) x6 (0,0,-1,0)(0,-1,-1,1) 1 大于 0,故 (7) (6) (0,0,-1,0)
T T
T
T
因 T (29) x5 (2,2,2,1)(0,0,-1,1)T 1 大于 0,故 (30) ( 29) ( 2,2,2,1)
T T
T
因 (30) x6 ( 2,2,2,1)(0,-1,-1,1) 3 大于 0,故 (31) ( 20) ( 2,2,2,1) 因 (31) x7 ( 2,2,2,1)(0,-1,0,1) 1 大于 0,故 (32) (31) ( 2,-2,-2,1)
二.编写求解上述问题的感知器算法程序
1. 实验结果截图
2. 程序代码
%程序功能:实现感知器算法 %时间:2014.10.5 clc; clear all; %作者:赵晓梅 201428014628066
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; k=0;%记录迭代次数 while(flag)
T T T
T
第四轮迭代: 因 ( 25) x1 ( 2,2,-2,0)(0,0,0,1) 0 不大于 0,故 ( 26) ( 25) x1 ( 2,2,2,1)
T T T
因 ( 26) x2 ( 2,-2,-2,1)(1,0,0,1) 3 大于 0,故 ( 27) ( 26) ( 2,2,2,1)
T T
T
因 (11) x3 (1,1,1,1)(1,0,1,1) 1 大于 0,故 (12) (11) (1,1,1,1)
T T T T
T
因 (12) x4 (1,1,1,1)(1,1,0,1) 1 大于 0,故 (13) (12) (1,1,1,1)
T T T T
T
因 ( 27) x3 ( 2,2,2,1)(1,0,1,1) 1 大于 0,故 ( 28) ( 27) ( 2,2,2,1) 因 ( 28) x4 ( 2,2,2,1)(1,1,0,1) 1 大于 0,故 ( 29) ( 28) ( 2,2,2,1)
T T T T T
T
因 (7) x7 (0,0,-1,0)(0,-1,0,1) 0 不大于 0,故 (8) (7) x7 (0,1,-1,-1) 因 (8) x8 (0,1,-1,-1)(-1,-1,-1,1) 3 大于 0,故 (9) (8) (0,1,-1,-1)
T T T
T
因 T (21) x5 (2,1,1,2)(0,0,-1,1)T 1 不大于 0,故 ( 22) ( 21) x5 ( 2,1,2,1) 因 ( 22) x6 ( 2,1,2,1)(0,-1,-1,1) 2 大于 0,故 ( 23) ( 22) ( 2,1,2,1)
T T T T T
T
因 ( 23) x7 ( 2,1,2,1)(0,-1,0,1) 0 不大于 0,故 ( 24) ( 23) x7 ( 2,-2,-2,0) 因 ( 24) x8 ( 2,-2,-2,0)(-1,-1,-1,1) 2 大于 0,故 ( 25) ( 24) ( 2,-2,-2,0)