模式识别作业第三章2.doc
- 文档编号:30859728
- 上传时间:2024-04-18
- 格式:DOC
- 页数:8
- 大小:246.04KB
模式识别作业第三章2.doc
《模式识别作业第三章2.doc》由会员分享,可在线阅读,更多相关《模式识别作业第三章2.doc(8页珍藏版)》请在冰豆网上搜索。
第三章作业
3.5已知两类训练样本为
设,用感知器算法求解判别函数,并绘出判别界面。
解:
matlab程序如下:
clear
%感知器算法求解判别函数
x1=[000]';x2=[100]';x3=[101]';x4=[110]';x5=[001]';x6=[011]';x7=[010]';x8=[111]';
%构成增广向量形式,并进行规范化处理
x=[0111000-1;00010-1-1-1;0010-1-10-1;1111-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');holdon;
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');gridon;
w=[-1,-2,-2,0]';c=1;N=2000;
fork=1:
N
t=[];
fori=1:
8
d=w'*x(:
i);
ifd>0
w=w;
t=[t1];
else
w=w+c*x(:
i);
t=[t-1];
end
end
ifi==8&t==ones(1,8)
w=w
symsxy
z=-w
(1)/w(3)*x-w
(2)/w(3)*y-1/w(3);
ezmesh(x,y,z,[0.512]);
axis([-0.5,1.5,-0.5,1.5,-0.5,1.5]);
title('感知器算法')
break;
else
end
end
运行结果:
w=
3
-2
-3
1
判别界面如下图所示:
若有样本;其增广;
则判别函数可写成:
若,则,否则
3.6已知三类问题的训练样本为
试用多类感知器算法求解判别函数。
解:
(方法一)
增广向量形式:
任取初始权向量
第一次迭代:
但且不成立
三个权向量都需要修改:
第二次迭代:
但且不成立
三个权向量都需要修改:
第三次迭代:
但且不成立
三个权向量都需要修改:
迭代到六、七、八次有权向量的解:
判别函数:
(方法二)
编写matlab程序如下:
clear
%多类感知器算法求解判别函数
x1=[-1-1]';x2=[00]';x3=[11]';
%增广向量形式
x=[-101;-101;111];
w1=[000]';w2=w1;w3=w1;
N=100;c=1;
fork=1:
N
t=[000];
fori=1:
3
d1=w1'*x(:
i);
d2=w2'*x(:
i);
d3=w3'*x(:
i);
switchi
case1
ifd1>d2&d1>d3
t(i)=1;
elseifd1>d2&d1<=d3
w1=w1+x(:
i);
w2=w2;
w3=w3-x(:
i);
elseifd1>d3&d1<=d2
w1=w1+x(:
i);
w2=w2-x(:
i);
w3=w3;
elseifd1<=d2&d1<=d3
w1=w1+x(:
i);
w2=w2-x(:
i);
w3=w3-x(:
i);
end
case2
ifd2>d1&d2>d3
t(i)=1;
elseifd2>d1&d2<=d3
w1=w1;
w2=w2+x(:
i);
w3=w3-x(:
i);
elseifd2>d3&d2<=d1
w2=w2+x(:
i);
w1=w1-x(:
i);
w3=w3;
elseifd2<=d1&d2<=d3
w2=w2+x(:
i);
w1=w1-x(:
i);
w3=w3-x(:
i);
end
case3
ifd3>d2&d3>d1
t(i)=1;
elseifd3>d2&d3<=d1
w3=w3+x(:
i);
w2=w2;
w1=w1-x(:
i);
elseifd3>d1&d3<=d2
w1=w1;
w3=w3+x(:
i);
w2=w2-x(:
i);
elseifd3<=d2&d3<=d1
w3=w3+x(:
i);
w2=w2-x(:
i);
w1=w1-x(:
i);
end
end
end
ift==ones(1,3)
w1,w2,w3
break;
else
end
end
运行结果:
w1=
-1
-1
-1
w2=
0
0
0
w3=
2
2
-2
故可得判别函数:
3.7用LMSE算法求解习题3.5中两类模式的判别函数,并绘出判别界面。
解:
编写matlab程序如下:
clear
%LMSE算法求解判别函数
x1=[000]';x2=[100]';x3=[101]';x4=[110]';x5=[001]';x6=[011]';x7=[010]';x8=[111]';
%规范化增广样本矩阵
x=[0001;1001;1011;1101;00-1-1;0-1-1-1;0-10-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');holdon;
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');gridon;
%伪逆矩阵
X=inv(x'*x)*x';%x的伪逆矩阵
B=ones(8,1);z=10*ones(8,1);t=[z];
fori=2:
1000
W=X*B;
e=x*W-B;
t=[te];j=i-1;
%-------------------------
%这里存在问题,有待解决.但不影响本题
a=e>0;
b=e<0;
ifa==0
W',B',e',i
break;
elseifsum(b,1)==8
disp('线性不可分模式')
brek;
else
B=B+(e+abs(e));
End
%-------------------------
symsxy
z=-W
(1)/W(3)*x-W
(2)/W(3)*y-W(4)/W(3);
ezmesh(x,y,z,[0.512]);
axis([-0.5,1.5,-0.5,1.5,-0.5,1.5]);
title('LMSE算法·¨')
运行结果:
W=
2.0000
-2.0000
-2.0000
1.0000
B=
1.0000
3.0000
1.0000
1.0000
1.0000
3.0000
1.0000
1.0000
e=
1.0e-015*
-0.2220
0
-0.2220
-0.2220
-0.2220
0
-0.2220
-0.2220
i=
53
3.8已知两类模式
用LMSE算法检验模式样本的线性可分性。
解:
写出规范化增广样本矩阵:
求伪逆矩阵:
取,
全部分量为负,无解,停止迭代。
为线性不可分模式。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 模式识别 作业 第三