perceptron感知机 mtalab
data=load('data.txt');
x=[data(:,1),data(:,2)];
y=data(:,3);
k=length(y);
%绘制散点图
for j=1:k
if y(j)==1
plot(x(j,1),x(j,2),'o');
hold on
end
if y(j)==-1
plot(x(j,1),x(j,2),'x');
hold on
end
end
%初始化参数
w=[0,0];
b=0;
r=0.5; %学习速度
con=0;
t=0; %记录迭代次数
br=[]; %记录b的变化
wr=[]; %记录w的变化
while con==0
for i=1:k
if (y(i)*(dot(w,x(i,:))+b))<=0 %判断是否分类错误
w(1)=w(1)+r*y(i)*x(i,1);
w(2)=w(2)+r*y(i)*x(i,2);
b=b+r*y(i);
w=[w(1),w(2)];
wr=[wr,w];
br=[br,b];
t=t+1;
end
end
for i=1:k
con1(i)=(y(i)*(dot(w,x(i,:))+b));
end
con=(all(con1(:)>0));
end
xt=0:0.1:10;
yt=(-w(1)*xt-b)/w(2);
plot(xt,yt);
数据:
1.2435 4.1728 -1.0000
1.3435 6.6935 -1.0000
1.4435 5.6401 -1.0000
1.5435 3.7946 -1.0000
1.6435 4.2596 -1.0000
1.7435 6.2168 -1.0000
1.8435 5.1952 -1.0000
1.9435 4.7744 -1.0000
2.0435 3.6288 -1.0000
2.1435 5.6932 -1.0000
2.2435 6.1607 -1.0000
8.2858 5.0430 1.0000
8.3858 6.1396 1.0000
8.4858 4.8663 1.0000
8.5858 3.1537 1.0000
8.6858 5.7617 1.0000
8.7858 4.8398 1.0000
8.8858 6.4166 1.0000
8.9858 5.7650 1.0000
9.0858 4.0198 1.0000
9.1858 5.3157 1.0000
9.2858 4.8547 1.0000
运行结果:

朝闻道

浙公网安备 33010602011771号