R语言感知机初步了解(一)

今天刚学感知机,先拿李航老师的《统计学习方法》中的 例2.1 练练手。

我这里使用的是R语言

原始形式

首先判断点是否能被正确分类,若不能则更新 w和b ,直到所有的点都能被正确分类。

1、取初值w=0,b=0;

2、若 y_i(wx_i+b) \leqslant 0

则更新    w = w + \eta y_ix_i   

               b = b + \eta y_i

3、返回步骤2,看看是否满足,若不满足则一直训练到最后一个点都被正确分类。

代码演示  此处 \eta =1 所以我偷懒一下

x = cbind(c(3,3),c(4,3),c(1,1))
y = matrix(c(1,1,-1))
w = c(0,0)
b = 0
plot(x[1,],x[2,])

gzj = function(x,y,w,b){
  while (sum((w%*%x+b)*t(y) <= 0) > 0 ) { 
    for (i in 1:length(y)) {
      if (y[i]*(w%*%x[,i]+b) <= 0) {
        w = w+y[i]*x[,i]
        b = b+y[i]
      }
    }
  }
  return(list(w=w,b=b))
}
gzj(x,y,w,b)

最终结果


$w
[1] 1 1

$b
[1] -3

和课本的一样

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦什

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值