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

运行结果:

 

朝闻道
原文地址:https://www.cnblogs.com/wander-clouds/p/8845876.html