《李航统计学习方法》第二章:感知机学习算法 - 算法代码

 1. 感知机学习算法的原始形式

# -*- coding: utf-8 -*-
'''
《李航统计学习方法》
算法2.1(感知机学习算法的原始形式)
e.g.2.2
'''

def Perceptron_Study_basic(x_list, y_list):
    w = [0, 0]
    b = 0
    rate = 1 # 学习率
    item = 0 # 迭代次数
    while True:
        flag = 0
        for x, y in zip(x_list, y_list):
            if (w[0]*x[0] + w[1]*x[1] + b)*y > 0: # 分类正确
                flag += 1
                continue
            else:
                item += 1
                deta_w0 = -x[0]*y 
                deta_w1 = -x[1]*y
                deta_b = -y
                w[0] -= rate * deta_w0
                w[1] -= rate * deta_w1
                b -= rate * deta_b
                print('第{}次迭代:w = ({},{}), b = {}, 错划分点:({},{})'.format(item, w[0], w[1], b, x[0], x[1]))
                break
        if flag == len(y_list): # 全部分对,不再调整方程
            print('超平面方程为: {}*x1 + {}*x2 + {} = 0'.format(w[0], w[1], b))
            break
        
if __name__ 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值