感知机算法之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 * yiw += l * item[-1] * item[:-1]b += l * item[-1]# 打印结果print("w={}, b={}".format(w, b))# 检查是否有错误分类点
def check():# 默认无错误分类点flag = False# 检查所有样本点# 记录检查结果res = 0for item in train_set:# 计算w*xi+bres = (w * item[:-1]).sum() + b# 计算yi(w*xi+b)res *= item[-1]# 判断是否错误分类if res <= 0:# 错误分类flag = True# 更新该样本点参数update(item)return flagif __name__ == "__main__":flag = Falsefor i in range(100):# 无错误分类点,结束迭代if not check(): # check返回False,表示无错误分类点flag = Truebreak# 有错误分类点,需继续迭代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.参考

李航——统计学习方法
林轩石——机器学习基石
知乎——《浅析感知机二》

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

感知机算法之Python代码实现相关推荐

  1. 决策树模型 - (ID3算法、C4.5算法) - Python代码实现

    目录 算法简介 信息熵(Entropy) 信息增益(Information gain) - ID3算法 信息增益率(gain ratio) - C4.5算法 源数据 代码实现 - ID3算法 代码实现 ...

  2. 维吉尼亚密码的破解算法及python代码实现

    目录 1. 密文描述 1.1 密文1 1.2 密文2 2. 破解原理 2.1 重合指数法确定密钥长度 2.2 互重合指数确定子串间相对偏移 2.3 密钥字的确定 2.4 密文破解 3. 破解代码 参考 ...

  3. 算法笔记(11)逻辑回归算法及Python代码实现

    逻辑回归算法是一种被广泛使用的分类算法,通过训练数据中的正负样本,学习样本特征到样本标签之间的假设函数.逻辑回归假设因变量 y 服从伯努利分布,而线性回归假设因变量 y 服从高斯分布. 因此与线性回归 ...

  4. 数据清洗:真值发现TruthFinder算法(附Python代码)

      本篇博客主要介绍数据清洗中的真值发现问题及其经典求解算法TruthFinder的原理及Python实现. 1 真值发现   Web已经成为大多数人信息获取的重要来源,但由于信息时效性.传播性.信息 ...

  5. 《统计学习方法》第10章 隐马尔科夫模型 HMM算法 纯Python代码实现 + 前后向算法矩阵形式 + 课后习题答案

    理论知识:<统计学习方法>第10章 隐马尔科夫模型 一.HMM算法矩阵写法 前向算法 P(O∣λ)=πTBo1ABo2ABo3⋯ABoT(1,1,1)TP(O| \lambda) = \p ...

  6. Berlekamp-Massey算法及python代码实现

    1. Berlekamp-Massey算法原理介绍 1.1 基本概念简介   设 a‾=(a0,,a1,⋯,aN−1)\underline{a}=\left( a_{0,},a_1,\cdots ,a ...

  7. 求大素数原根算法(python代码)

    定义: 代码可直接看下面求素数p原根的最终方法 对于素数 p,如果存在一个正整数 1<a<p, 使得 a1,a2,-,ap−1a1,a2,-,ap−1 模 p 的值 取遍 1,2,-,p− ...

  8. 【机器学习】一文读懂异常检测 LOF 算法(Python代码)

    本篇介绍一个经典的异常检测算法:局部离群因子(Local Outlier Factor),简称LOF算法. 背景 Local Outlier Factor(LOF)是基于密度的经典算法(Breunin ...

  9. python实现支持向量机实例_一个简单的案例带你了解支持向量机算法(Python代码)...

    介绍 掌握机器学习算法并不是一个不可能完成的事情.大多数的初学者都是从学习回归开始的.是因为回归易于学习和使用,但这能够解决我们全部的问题吗?当然不行!因为,你要学习的机器学习算法不仅仅只有回归! 把 ...

最新文章

  1. 使用Visual Studio 2010开发和调试Html5项目
  2. 附近的人 php,php 附近的人
  3. Sublime package control错误:There are no packages available for installation
  4. 指针类型和指针类型转换的理解
  5. vue传中文标点_vue项目引入第三方高德地图实现标点定位
  6. UNIX网络编程——select函数的并发限制和 poll 函数应用举例
  7. 分布式系统开发注意点_分布式系统注意事项
  8. NVIDIA Tesla K40C 和 AMD Firepro W8100 的对比
  9. 基于JAVA+Servlet+JSP+MYSQL的银行账户管理系统
  10. haproxy Starting proxy XXX: cannot bind socket
  11. laravel常用拓展库
  12. iOS:Tagged Pointer
  13. 小楼一夜听春雨···
  14. 一些简单的css,html,js笔记分享给大家,希望能够帮助到大家
  15. docker-compose 部署shipyard
  16. 同一个电脑安装多个jdk版本
  17. linux - 安装Ubuntu20.04.5版本
  18. lua pairs与ipairs区别
  19. linux 9 aml 设置wifi,aml常用命令.pdf
  20. leetcode 883. 三维形体投影面积(python)

热门文章

  1. 接口报错问题以及解决方法
  2. 输入两点坐标(X1,Y1),(X2,Y2),计算并输出两点间的距离。
  3. 大智慧的扩展数据在那个目录
  4. 高阶过程与过程数据化
  5. css实现简易五角星星级
  6. word | 如何插入横版页面
  7. javaweb -- jdbc
  8. 『杭电1759』Matrix Revolution
  9. 聊聊2018年的经济和投资情况
  10. 论氢氧酸(苛性氢)的危害