感知机 matlab,感知机的算法及Matlab的实现

3781

感知机算法的原始形式为

3781

以上内容摘自 统计学习方法.李航

以下为自己写的matlab 的感知器算法实现clear all

data=[3 3 1;

4 3 1;

1.5 0 1;

0.5 0.9 1;

2 1 1;

0.5 0.5 -1;

0 0 -1;

-2 -2 -1;

-3 0 -1;

1 -1 -1];

X=data(:,[1,2]); y=data(:,3);

m=size(X,1); % m=样本点个数

plotData2(X,y);%先在图上将样本画出来

axis([-4 4 -4 4]);

hold on

x1=-4:0.2:4; %x1坐标轴

W=[0;0]; b=0;

alph=0.5; %学习率

error=1;

while error>0

error=0;

for i=1:m

if (((W'*X(i,:)'+b)*y(i))<=0)

error=error+1;

W=W+alph*y(i)*X(i,:)';

b=b+alph*y(i);

y1=(-W(1)*x1-b)/W(2);

plot(x1,y1,'-b');

pause(0.5);

end

end

end

plot(x1,y1,'-r','Linewidth',3);

function plotData2(X,y)

figure;hold on;

pos=find(y==1);

neg=find(y==-1);

plot(X(pos,1),X(pos,2),'k+','Linewidth',2,'MarkerSize',9);

plot(X(neg,1),X(neg,2),'ko','MarkerFaceColor','r','Linewidth',2,'MarkerSize',7);

hold off;

end

实现效果如下图所示

3781

**

最后的红线为最后学习完成得到的分割线!

**

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值