单神经元结构感知机对两类标本的分类
1 %感知器分类问题。X为输入样本,T为目标向量
2 clear
3 % X=[-0.5,-0.5,0.3,0.1,-0.1,0.8,0.2,0.3;
4 % 0.3,-0.2,-0.6,0.1,-0.5,1.0,0.3,0.9];
5 % T=[0,0,0,1,0,1,1,1]; M=100;
6 % E=[0.01;0.01;0.0;0.0;0.01;0.01;0.01;0.01];
7
8
9 % 逻辑或分类实例
10 X=[ 0, 0, 1, 1;
11 0, 1, 0, 1];
12 T=[0, 1, 1, 1];
13 M=100;
14 E=[0.1 0.1 0.1 0.1]';
15
16 %单神经元结构感知机对两类标本的分类
17 [R,Q]=size(X); %R=2;Q=8为X阵的维数;
18 [S,Q]=size(T); %S=1;Q=8为T阵的维数;
19 W=rands(S,R); % 根据输入样本X和目标向量T的维数产生随机权值阵W的初值;
20 %W=[-0.1 0.2];
21 C=rands(S,1);%产生随机阈值初值;
22 Y=W*X+C; %计算感知器输出;
23 F=zeros([S Q]); %初始化与分配内存
24 for j=1:M %循环开始
25 for i=1:Q % 对感知器输出分类;
26 if Y(1,i)>0; %求感知器阈值激发后的输出;
27 F(1,i)=1;
28 else
29 F(1,i)=0;
30 end
31 end
32 if all(F==T) %感知器的输出F和目标T不等时修正权值阵和阈值;
33 break
34 end
35 dC=0.1*(T-F)*E;%阈值修正;
36 C=C+dC; %阈值修正;
37 dW=(T-F)*X'; %权值增量
38 W=W+dW; %动态权值
39 Y=W*X+C;
40 end %循环结束
41 Plotpv(X,T); %绘点,绘制分类模式
42 plotpc(W,C); %绘分割线;绘制决策面
43 grid on
44 xlabel('x1'), ylabel('x2');
45 title(sprintf('(%f)X1+(%f)X2+(%f)',W(1),W(2),C));
46
2 clear
3 % X=[-0.5,-0.5,0.3,0.1,-0.1,0.8,0.2,0.3;
4 % 0.3,-0.2,-0.6,0.1,-0.5,1.0,0.3,0.9];
5 % T=[0,0,0,1,0,1,1,1]; M=100;
6 % E=[0.01;0.01;0.0;0.0;0.01;0.01;0.01;0.01];
7
8
9 % 逻辑或分类实例
10 X=[ 0, 0, 1, 1;
11 0, 1, 0, 1];
12 T=[0, 1, 1, 1];
13 M=100;
14 E=[0.1 0.1 0.1 0.1]';
15
16 %单神经元结构感知机对两类标本的分类
17 [R,Q]=size(X); %R=2;Q=8为X阵的维数;
18 [S,Q]=size(T); %S=1;Q=8为T阵的维数;
19 W=rands(S,R); % 根据输入样本X和目标向量T的维数产生随机权值阵W的初值;
20 %W=[-0.1 0.2];
21 C=rands(S,1);%产生随机阈值初值;
22 Y=W*X+C; %计算感知器输出;
23 F=zeros([S Q]); %初始化与分配内存
24 for j=1:M %循环开始
25 for i=1:Q % 对感知器输出分类;
26 if Y(1,i)>0; %求感知器阈值激发后的输出;
27 F(1,i)=1;
28 else
29 F(1,i)=0;
30 end
31 end
32 if all(F==T) %感知器的输出F和目标T不等时修正权值阵和阈值;
33 break
34 end
35 dC=0.1*(T-F)*E;%阈值修正;
36 C=C+dC; %阈值修正;
37 dW=(T-F)*X'; %权值增量
38 W=W+dW; %动态权值
39 Y=W*X+C;
40 end %循环结束
41 Plotpv(X,T); %绘点,绘制分类模式
42 plotpc(W,C); %绘分割线;绘制决策面
43 grid on
44 xlabel('x1'), ylabel('x2');
45 title(sprintf('(%f)X1+(%f)X2+(%f)',W(1),W(2),C));
46