首页IT科技感知机模型是谁提出的?(感知机算法之Python代码实现)

感知机模型是谁提出的?(感知机算法之Python代码实现)

时间2025-05-05 19:50:23分类IT科技浏览4609
导读:感知机算法之Python代码实现 1.算法简介...

感知机算法之Python代码实现

1.算法简介

感知机学习算法原始形式:

输入:训练集T

输出:w,b

感知机模型:f(x)=sign(w·x+b)

算法步骤:

1.初始化参数w0,b0

2.在训练集中选取数据(xi,yi)

3.如果yi(w·xi+b)<=0:

w=w+l·yi·xi # l为学习率

b=b+l·yi

4.转至2            ,直至训练集中没有误分类点            。

学习算法的直观解释:

当一个实例点被误分类                  ,即位于分离超平面的错误一侧时      ,则调整w和b的值         ,使得分离超平面向该错误分类点

的一侧移动                  ,以减少该错误分类点与超平面间的距离         ,直至超平面越过该误分类点使其被正确分类                  。

2.代码实现

import numpy as np # 训练集 train_set = np.array([[3, 3, 1], [4, 3, 1], [1, 1, -1]]) w = np.array([0, 0]) # 权重参数 b = 0 #偏置 l = 1 # 学习率 # 更新该样本点参数 def update(item): global w, b # 全局变量(便于修改全局变量w和b) # 计算w和b ——w += l * yi * xi      ,b += l * yi w += l * item[-1] * item[:-1] b += l * item[-1] # 打印结果 print("w={}, b={}".format(w, b)) # 检查是否有错误分类点 def check(): # 默认无错误分类点 flag = False # 检查所有样本点 # 记录检查结果 res = 0 for item in train_set: # 计算w*xi+b res = (w * item[:-1]).sum() + b # 计算yi(w*xi+b) res *= item[-1] # 判断是否错误分类 if res <= 0: # 错误分类 flag = True # 更新该样本点参数 update(item) return flag if __name__ == "__main__": flag = False for i in range(100): # 无错误分类点                  ,结束迭代 if not check(): # check返回False            ,表示无错误分类点 flag = True break # 有错误分类点   ,需继续迭代 if flag: print("100次迭代                  ,可以完成正确分类!") else: print("100次迭代               ,不可完成正确分类!")

3.代码结果

w=[3 3], b=1 w=[2 2], b=0 w=[1 1], b=-1 w=[0 0], b=-2 w=[3 3], b=-1 w=[2 2], b=-2 w=[1 1], b=-3 100次迭代,可以完成正确分类!

4.参考

李航——统计学习方法

林轩石——机器学习基石

知乎——《浅析感知机二》

谢谢观看               , 欢迎交流            、支持点赞和收藏哦 ~

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
canvas quiz会有记录吗(浅谈两种前端截图方式:Canvas截图 vs SVG截图)