用python实现一个简单地感知机模型

'''今天看了几页李航老师的《统计学习方法》,感觉写的很透彻,
有点手痒按照书上的算法花几分钟写了一个简单至极的感知机模型,没有调用numpy,
全程用列表完成,所以内容上稍显复杂'''

alist = [[3,3,1],[4,3,1],[1,1,-1]] #生成实例点
w = [0,0]
b = 0
theta = 1#初始化w和b

def l(x,w,b): #x,w为向量,b为数值

    return x[2] * (x[0]*w[0]+x[1]*w[1] + b)
flag = True
while flag:
    for x in alist:
            if l(x,w,b) <= 0:
                #更新w和b的值
                w[0] = w[0] + theta*x[0]*x[2]
                w[1] = w[1] + theta*x[1]*x[2]
                b = b + theta*x[2]
            print('更新后的模型为:%s*x1+%s*x2+(%s)' % (w[0],w[1],b))
            a = [l(x,w,b) for x in alist]
            if min(a) > 0:
                flag = False
                print('更新完毕!')

'''输出结果如下:
更新后的模型为:3*x1+3*x2+(1)
更新后的模型为:3*x1+3*x2+(1)
更新后的模型为:2*x1+2*x2+(0)
更新后的模型为:2*x1+2*x2+(0)
更新后的模型为:2*x1+2*x2+(0)
更新后的模型为:1*x1+1*x2+(-1)
更新后的模型为:1*x1+1*x2+(-1)
更新后的模型为:1*x1+1*x2+(-1)
更新后的模型为:0*x1+0*x2+(-2)
更新后的模型为:3*x1+3*x2+(-1)
更新后的模型为:3*x1+3*x2+(-1)
更新后的模型为:2*x1+2*x2+(-2)
更新后的模型为:2*x1+2*x2+(-2)
更新后的模型为:2*x1+2*x2+(-2)
更新后的模型为:1*x1+1*x2+(-3)
更新完毕!'''

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值