感知机例题 matlab

D=[3 3 1;4 3 1;1 1 -1];
X=D(:,[1,2]); %取1,2列为X数据
Y=D(:,3);%取第三列为标签
plotData2(X,Y);%将样本点画出来 
axis([-5 5 -5 5]);%横纵坐标范围
hold on
[x1,y1] = ML(X,Y);
plot(x1,y1,'-r','Linewidth',3);
function [x1,y1] = ML(X,Y)
%第一步,初始化参数
x1=-5:0.01:5; %x1坐标轴
m=length(Y);%样本大小
w=[0;0]; %训练数据是二维的,故w也是二维的
b=0;
r=0.5;  %学习率
% t=0;%迭代次数
error=1;
while error>0 
    error=0;
    for i=1:m
          if (((w'*X(i,:)'+b)*Y(i))<=0)
              error=error+1;
               w=w+r*Y(i)*X(i,:)';
               b=b+r*Y(i);
               y1=(-w(1)*x1-b)/w(2);
               plot(x1,y1,'-b');
               pause(0.5);
          end 
     end
end
end
function plotData2(X,Y)
  figure;hold on;
  pos=find(Y==1);%找到Y矩阵中等于1的数存于变量pos正中
  n
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值