感知器算法练习
产生两个具有200个二维的数据集,均值分别为(5,1), (-5,1), 方差均为I. 设计使用感知器算法的线性分类器, 使用2个不同的初始化向量,步长参数设为1.
解:初始化向量为W1=[1 1 1]’时
function Perceptron2
%UNTITLED Summary of this function goes here % Detailed explanation goes here X1=normrnd(5,1,[1 200]); Y1=normrnd(1,1,[1 200]); X2=normrnd(-5,1,[1 200]); Y2=normrnd(1,1,[1 200]); O=ones(1,200);
X=[X1 -X2;Y1 -Y2;O -O]; W1=[1 1 1]'; t=0; s=1;
while s>0 s=0; for i=1:400
if W1'*X(:,i)<=0; W1=W1+X(:,i); s=s+1; else W1=W1+0; s=s+0; end end
t=t+1; end
fprintf('μü′ú′?êy?a\\n',t) fprintf('?a?òá??a\\nW=') disp(W1) end
>> Perceptron2 迭代次数为 解向量为
W= 4.3106 -1.4254 0
>> X1=normrnd(5,1,[1 200]); Y1=normrnd(1,1,[1 200]);
X2=normrnd(-5,1,[1 200]); Y2=normrnd(1,1,[1 200]); >> x=X1;y=Y1; >> plot(x,y,'*') >> hold on x=X2;y=Y2; >> plot(x,y,'o') >> hold on
>> ezplot('4.3106*x-1.4254*y')
初始化向量为W1=[0 0 0]’时
>> Perceptron2 迭代次数为 解向量为 W= 5.9840 2.1754
1.0000