模式识别作业第三章2(推荐文档)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第三章作业3.5 已知两类训练样本为
1:(0 0 0 )',(1 0 0)' ,(1 0 1)',(1 1 0)'
ω
2:(0 0 1)',(0 1 1)' ,(0 1 0)',(1 1 1)'
ω
设0)'
(-1,-2,-2,
)1(=
W,用感知器算法求解判别函数,并绘出判别界面。
解:matlab程序如下:
clear
%感知器算法求解判别函数
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]';
%构成增广向量形式,并进行规范化处理
x=[0 1 1 1 0 0 0 -1;0 0 0 1 0 -1 -1 -1;0 0 1 0 -1 -1 0 -1;1 1 1 1 -1 -1 -1 -1];
plot3(x1(1),x1(2),x1(3),'ro',x2(1),x2(2),x2(3),'ro',x3(1),x3(2),x3(3) ,'ro',x4(1),x4(2),x4(3),'ro');hold on;
plot3(x5(1),x5(2),x5(3),'rx',x6(1),x6(2),x6(3),'rx',x7(1),x7(2),x7(3) ,'rx',x8(1),x8(2),x8(3),'rx');grid on;
w=[-1,-2,-2,0]';c=1;N=2000;
for k=1:N
t=[];
for i=1:8
d=w'*x(:,i);
if d>0
w=w;
t=[t 1];
else
w=w+c*x(:,i);
t=[t -1];
end
end
if i==8&t==ones(1,8)
w=w
syms x y
z=-w(1)/w(3)*x-w(2)/w(3)*y-1/w(3);
ezmesh(x,y,z,[0.5 1 2]);
axis([-0.5,1.5,-0.5,1.5,-0.5,1.5]);
title('感知器算法')
break;
else
end
end
运行结果:
w =
3
-2
-3
1
判别界面如下图所示:
若有样本123[,,]'x x x x =;其增广]1,,,[321x x x X =;
则判别函数可写成: 1323')(321+*-*-*=*=x x x X w X d
若0)(>X d ,则1ω∈x ,否则2ω∈x
3.6 已知三类问题的训练样本为
123:(-1 -1)', (0 0)' , :(1 1)'ωωω
试用多类感知器算法求解判别函数。
解:(方法一)
增广向量形式:123:(-1 -1 1)', (0 0 1)' , :(1 1 1)'X X X
任取初始权向量1;)'0,0,0()1()1()1(321====c W W W
第一次迭代: 0)'*1()1(111==X W d
0)'*
1()1(122==X W d 0)'*
1()1(133==X W d 11ω∈X ,但()()1121d d >且()()1131d d >不成立
三个权向量都需要修改:
)'1,1,1(*)1()2(111--=+=X c W W
)'1,1,1(*)1()2(122-=-=X c W W
)'1,1,1(*)1()2(133-=-=X c W W
第二次迭代:1)'*2()2(211==X W d
1)'*
2()2(222-==X W d 1)'*
2()2(233-==X W d 22ω∈X ,但()()2212d d >且()()2232d d >不成立
三个权向量都需要修改:
)'0,1,1(*)2()3(211--=-=X c W W
)'0,1,1(*)2()3(222=-=X c W W
)'2,1,1(*)2()3(233-=-=X c W W
第三次迭代:2)'*3()3(311-==X W d
2)'*
3()3(322==X W d 0)'*
3()3(333==X W d 22ω∈X ,但()3)3(13d d >且()()3323d d >不成立
三个权向量都需要修改:
)'0,1,1(*)3()4(311--=-=X c W W
)'1,0,0(*)3()4(322-=-=X c W W
)'1,2,2(*)3()4(333-=-=X c W W
迭代到六、七、八次有权向量的解:
)'1,1,1()6()7()8(1111---====W W W W
)'0,0,0()6()7()8(2222====W W W W
)'2,2,2()6()7()8(3333-====W W W W
判别函数: 1)(211---=x x X d
0)(2=X d
222)(213-+=x x X d
(方法二)
编写matlab 程序如下:
clear
%多类感知器算法求解判别函数
x1=[-1 -1]';x2=[0 0]';x3=[1 1]';
%增广向量形式
x=[-1 0 1;-1 0 1;1 1 1];
w1=[0 0 0]';w2=w1;w3=w1;
N=100;c=1;
for k=1:N
t=[0 0 0];
for i=1:3
d1=w1'*x(:,i);
d2=w2'*x(:,i);
d3=w3'*x(:,i);
switch i
case 1
if d1>d2&d1>d3
t(i)=1;
elseif d1>d2&d1<=d3
w1=w1+x(:,i);
w2=w2;
w3=w3-x(:,i);
elseif d1>d3&d1<=d2
w1=w1+x(:,i);
w2=w2-x(:,i);
w3=w3;
elseif d1<=d2&d1<=d3
w1=w1+x(:,i);
w2=w2-x(:,i);
w3=w3-x(:,i);
end
case 2
if d2>d1&d2>d3