模式识别作业第三章2

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第三章作业已知两类训练样本为

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,[ 1 2]);

axis([,,,,,]);

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

已知三类问题的训练样本为

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);

相关文档
最新文档