机器学习——感知器算法及python实现
来源:互联网 发布:淘宝联盟手机版5.2苹果 编辑:程序博客网 时间:2024/06/09 05:41
说明:本文从自己的理解出发来讲解感知器是如何训练的,如想知道比较学术的概念,请查阅相关论文。
1、什么是感知器
本文假设数据为:二维二类、线性可分
感知器就是一个分类器,如:给两类数据做训练集A,B,训练完成之后,给定一个测试数据,通过感知器,可以分成A或B。
因为数据是二维线性可分的,我们不妨假设该线性方程为w0*x0+w1*x1+w2 = 0
2、如何训练
训练的最终结果是训练集中A的结果在直线的一侧,假设经过过滤器后其值<0; B的结果在直线的另一侧经过过滤器后其值>0。
可以先给w=[w0,w1,w2]赋一个初始值如w=[1,1,1]。
如果训练集中的点x的标签为A,且带入线性方程后的值<0,则当前感知器对x点分类正确,不对w进行调整
如果训练集中的点x的标签为A,且带入线性方程后的值>=0,则当前感知器对x点分类不正确,对w进行调整。
本来应该<0,但结果>=0,所以w调整原则为w =w-x。因为wx>(w-x)*x,能够使调整后的结果变小
如果训练集中的点x的标签为B,且带入线性方程后的值>0,则当前感知器对x点分类正确,不对w进行调整
如果训练集中的点x的标签为B,且带入线性方程后的值<=0,则当前感知器对x点分类不正确,对w进行调整。
本来应该>0,但结果<=0,所以w调整原则为w =w+x。因为wx<(w+x)*x,能够使调整后的结果变大
其中应为w比x多了一个维度,对x的处理方式是采用增量模式,即每个样本的第三维度都为1
3、python代码实现
%matplotlib inlineimport numpy as npimport matplotlib.pyplot as pltw = [1,1,1]x1 =[[1,0,1],[0,1,1],[2,0,1],[2,2,1]]x2=[[-1,-1,1],[-1,0,1],[-2,-1,1],[0,-2,1]]flag = Falsewhile flag != True: for i in range(4): t = 0 for j in range(3): t += w[j]*x1[i][j] if(t <= 0): for j in range(3): w[j] +=x1[i][j] for i in range(4): t = 0 for j in range(3): t += w[j]*x2[i][j] if(t >= 0): for j in range(3): w[j] -=x2[i][j] flag = True for i in range(4): t1 = 0 t2 = 0 for j in range(3): t1 += w[j]*x1[i][j] t2 += w[j]*x2[i][j] if (t1 <=0 ): flag =False break if(t2 >=0): flag = False breakplt.figure()for i in range(4): plt.scatter(x1[i][0],x1[i][1],c = 'r',marker='o') plt.scatter(x2[i][0],x2[i][1],c = 'g',marker='*')plt.grid()p1=[-2.0,2.0]p2=[(-w[2]+2*w[0])/w[1],(-w[2]-2*w[0])/w[1]]plt.plot(p1,p2)plt.show()
4、测试结果
5、结果分析
该算法对线性可分的数据进行分类,若非线性可分,会导致死循环
0 0
- 机器学习——感知器算法及python实现
- 机器学习算法——感知机(Python源码)
- Python机器学习-感知机原理及代码实现
- 机器学习算法——感知机
- 感知器 机器学习算法
- 机器学习-感知机python实现
- 机器学习之感知机python实现
- 机器学习:AdaBoost 算法及Python实现
- 机器学习算法(分类算法)—Rosenblatt感知机
- python实现感知器算法
- 机器学习之感知器学习算法
- 机器学习-感知器学习算法
- 机器学习算法 原理、实现与实践 —— 感知机与梯度下降
- 机器学习算法 原理、实现与实践 —— 感知机与梯度下降
- 机器学习—感知机
- [python]感知机学习算法实现
- python 机器学习——从感知机算法到各种最优化方法的应用(python)
- 机器学习——随机森林算法randomForest——原理及python实现
- 进程、线程
- 子网掩码
- kibana visualize添加自定义查询
- 图像金字塔
- Android签名打包的作用
- 机器学习——感知器算法及python实现
- studio的快捷键(全面)
- Windows图形设备接口及Windows绘图
- Oracle之 dmp导入/导出、数据库操作等过程中的字符集问题
- 在种子轮中,如何区分风险投资、种子投资和天使投资?
- sql语句增加表单字段ALTER TABLE ADD 增加多个字段 外键约束
- POJ3484_Showstopper_前缀和思想&&二分
- V4L2视频驱动程序开发之驱动方法poll 和 应用程序select
- 分布式架构学习之持续集成:010--Maven私有库和本地库的安装与配置(Sonatype Nexus + Maven)