位置: IT常识 - 正文
推荐整理分享感知机算法之Python代码实现(感知机算法python),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:感知机算法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 flagif __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=1w=[2 2], b=0w=[1 1], b=-1w=[0 0], b=-2w=[3 3], b=-1w=[2 2], b=-2w=[1 1], b=-3100次迭代,可以完成正确分类!4.参考李航——统计学习方法 林轩石——机器学习基石 知乎——《浅析感知机二》
谢谢观看, 欢迎交流、支持点赞和收藏哦 ~
上一篇:JavaScript表单验证(javascript表单验证和控制类)
友情链接: 武汉网站建设