感知器是由美国计算机科学家罗森布拉特(F.Roseblatt)于1957年提出的。感知器可谓是最早的人工神经网络。单层感知器是一个具有一层神经元、采用阈值激活函数的前向网络。通过对网络权值的训练,可以使感知器对一组输人矢量的响应达到元素为0或1的目标输出,从而实现对输人矢量分类的目的。

下图是一个感知器:

可以看到,一个感知器有如下组成部分:

01 输入权值:

其中,每一个输入分量Xj(j=1,2…,r)通过一个权值分量wj,进行加权求和,并作为阈值函数的输人。偏差 b的加入(对应上图中的 w0,这样是便于书写和理解)使得网络多了一个可调参数,为使网络输出达到期望的目标矢量提供了方便。感知器特别适合解决简单的模式分类问题。

02 激活函数:

激活函数则有较多的选择,较为常见的有sigmoid函数和阶跃函数,这里以阶跃函数为例!

03 输出:

感知器的输出则由如下公式计算得出:

感知器有个屌用呢?F.Roseblatt 已经证明,如果两类模式是线性可分的(指存在一个超平面将它们分开),则算法一定收敛。

举个例子:很多的呀,比如最简单的的布尔运算。可以看作是二分类问题,即给定一个输入,输出0(属于分类0)或1(属于分类1)。它还可以拟合任何的线性函数,任何线性分类或线性回归问题都可以用感知器来解决。给你讲讲感知器的训练过程吧!

利用下面的感知器规则迭代的修改参数直到训练完成。

其中,

Wi是与输入Xi应的权重项,b偏置项。事实上,可以把 b 看作是值永远为 1 的输入Xb对应的权重。t是训练样本的实际值,一般称之为 label。而 y 感知器的输出值,它是根据公式计算得出。η 一个称为学习速率的常数,其作用是控制每一步调整权的幅度。

每次从训练数据中取出一个样本的输入向量 x ,使用感知器计算其输出 y,再根据上面的规则来调整权重。每处理一个样本就调整一次权重。经过多轮迭代后(即全部的训练数据被反复处理多轮),就可以训练出感知器的权重,使之实现目标函数。

下边是根据感知器算法编写出的python代码实现:(实践时是利用一个鸢尾花数据集archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data)

class Perceptron():

"""

eta: learning rate(0.0-1.0)

n_iter:passes over the traing dataset

w_:weights after fitting

errors_:number of misclassifications in every epoch

"""

def __init__(self,eta=1,n_iter=10):

self.eta = eta

self.n_iter = n_iter

def fit(self,X,y):

"""fit training data."""

self.w_ = np.zeros(1 + X.shape[1])

self.errors_ = []

for _ in range(self.n_iter):

errors = 0

for xi,target in zip(X,y):

update = self.eta * (target - self.predict(xi))

self.w_[1:] += update * xi

self.w_[0] += update

errors += int(update != 0.0)

self.errors_.append(errors)

return self

def net_input(self,X):

"""caculate net input"""

return np.dot(X,self.w_[1:]) + self.w_[0]

#a.dot(b) np.dot(a,b) sum(i*j for i,j in zip(a,b))

def predict(self,X):

"""return class label after unit step"""

return np.where(self.net_input(X) >= 0.0, 1, -1)

搭配上必要的绘图模块,可以实现对鸢尾花种类的识别,这里只是对感知器进行介绍,就不过多叙述其他模块了

摘自:https://mp.weixin.qq.com/s/o1OJRPRWCbTwk7dhZgjeHg

感知器及其在python中的实现_感知器及其Python实现相关推荐

  1. 感知器及其在python中的实现_感知器及其在Python中的实现

    什么是感知器? 生物神经元示意图 感知器的概念类似于大脑基本处理单元神经元的工作原理.神经元由许多由树突携带的输入信号.胞体和轴突携带的一个输出信号组成.当细胞达到特定阈值时,神经元会发出一个动作信号 ...

  2. c++中的引用和python中的引用_对比 C++ 和 Python,谈谈指针与引用

    作者 | 樱雨楼 引言 指针(Pointer)是 C.C++ 以及 Java.Go 等语言的一个非常核心且重要的概念,而引用(Reference)是在指针的基础上构建出的一个同样重要的概念. 指针对于 ...

  3. 正则表达式在python中的应用_学习正则表达式在python中的应用

    目的:对文本的处理,正则表达式的功能很强大,可以很巧妙的过滤.匹配.获取想要的字符串,是必须学习的技能,这里只记录常用的写法,详细文档可以参看官方帮助文档. 环境:ubuntu 16.04 pytho ...

  4. Python中表示偶数_蒙特卡洛模拟(Python)深入教程

    译者:大表哥.wiige来源:AI研习社 什么是蒙特卡罗模拟? 蒙特卡罗方法是一种使用随机数和概率来解决复杂问题的技术.蒙特卡罗模拟或概率模拟是一种技术,用于了解金融部门.项目管理.成本和其他预测机器 ...

  5. python中cmd全称_【转】Python中执行cmd的三种方式

    原文链接:http://blog.csdn.net/menglei8625/article/details/7494094 目前我使用到的python中执行cmd的方式有三种: 1. 使用os.sys ...

  6. python中数据读写_【循序渐进学Python——文件中数据的读写以及操作】

    [循序渐进学Python--文件中数据的读写以及操作] [循序渐进学Python--文件中数据的读写以及操作] [循序渐进学Python--文件中数据的读写以及操作] 相信大家都想过自己有一天,可以用 ...

  7. python中文件分类_李亚涛:python实现电脑文件一键分类

    原标题:李亚涛:python实现电脑文件一键分类 python还挺好玩的,可以做蛮多事情! 比如桌面非常非常多的文件,想要整理一下,也可以用到python 比如我就自己写了个程序,整理文件就是运行一下 ...

  8. python中imread用法_【转载】Python 中各种imread函数的区别与联系

    Python 中各种imread函数的区别与联系 最近一直在用python做图像处理相关的东西,被各种imread函数搞得很头疼,因此今天决定将这些imread总结一下,以免以后因此犯些愚蠢的错误.如 ...

  9. 如何在python中制作超级玛丽_教你利用Python写一款超级玛丽,零基础也能学会,超级装逼...

    PS注意:很多人学Python过程中会遇到各种烦恼问题,没有人解答容易放弃.为此小编建了个Python全栈免费答疑.裙 :七衣衣九七七巴而五(数字的谐音)转换下可以找到了,不懂的问题有老司机解决里面还 ...

最新文章

  1. 收不到Win10正式版预订通知?一个批处理搞定
  2. GDCM:gdcm::EnumeratedValues的测试程序
  3. Fluent UDF【4】:C语言
  4. 阿里云服务器(windows2012)
  5. 几天后自动领取java怎么做的_学了14天,终于把Java项目一做完啦
  6. Flutter实战:手把手教你写Flutter Plugin
  7. linux之sed使用
  8. 最棒的PHP后台管理系统
  9. Unity之FBX文件操作学习笔记(二)SDK sample代码初探
  10. CRM客户管理系统有哪三大功能
  11. windows系统下的文件长名和文件短名
  12. 笔记本电脑如何蹭WiFi
  13. enumerate用法总结
  14. BUU Web[33-36]
  15. CSS设置元素的透明度(不透明度)
  16. linux管理控制面板--可视化管理linux
  17. 欢聚时代”狼人杀“产品岗面试总结——产品岗
  18. 用 LINQ 编写 C# 都有哪些一招必杀的技巧?
  19. vue-父组件向子组件共享数据
  20. 人工智能:群智能算法的一般框架、特点和不足

热门文章

  1. 【asm基础】使用nasm进行汇编(基础)
  2. java多线程计算1/1+1/2+...+1/n为何比单线程要慢?!?
  3. kali网络配置-临时ip、永久IP
  4. 如何避免沦为业务中的 工具人 ?
  5. 人机大战2.0即将上演,能否再次带火ai域名注册量?
  6. conda切换清华源
  7. ArcMap中运行hydro工具出错(0x80004005): error hresult e_fail
  8. 不发钱,项目经理怎么激励团队?
  9. 【MySQL】数据库相关操作思维导图
  10. 数学期望、方差、标准差、协方差、残差、均方差、均方误差、均方根误差、均方根值对比分析及python实现