感知器是由美国计算机科学家罗森布拉特(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. 【最短路】 ZOJ 1544 Currency Exchange 推断负圈
  2. 转:js-sdk探索之微信网页分享
  3. 题库练习2(随机数去重排序、分割字符串、进制转换)
  4. 问到ConcurrentHashMap不要再提Segment了
  5. 舞力全开加速_国行舞力全开评测:丝滑得不像是育碧服务器!
  6. Vue.js:监听属性
  7. 分布式ID-雪花算法
  8. Django--ORM基本操作
  9. Js事件对象EventUtil
  10. access中判断回文的代码_前端也来点算法(TypeScript版) | 2 - 回文数和回文链表
  11. 第1章 数据可视化概述
  12. 随机游走问题的神奇应用(三)
  13. (day 17 - 快排)剑指 Offer 40. 最小的k个数
  14. mysql 分库备份
  15. BooKu手机电子书阅读器,正式推出了
  16. java 上传csv/xslx文件,预览,导入到数据库中
  17. 八大常用基础电路保护器件作用
  18. SyntaxError: (unicode error) ‘utf-8‘ codec can‘t decode byte 0xca in position 0: invalid continuati
  19. 智慧城市,离我们还有多远?
  20. 信号的调制与解调matlab仿真,基于MATLAB对信号调制与解调的仿真

热门文章

  1. zk安装启动(windows版本)
  2. topas 解释(AIX下的top)
  3. word2013从第三页设置页码,页码格式为page X of Y
  4. 记一次Chrome冒充QQ浏览器领取奖励之行
  5. 二进制文件被拒_求助官方,app被拒绝几次了,二进制文件被拒绝
  6. 它便是那只大闹天宫的泼猴,今生注定不凡
  7. 关于使用fgetc函数和feof函数的一些注意事项
  8. 切换摄像头操作(前置、后置)
  9. 基于Android7.0的Launcher3源码分析(1)——框架设计分析
  10. VS报错信息:无法打开包括文件:“d3dx9math.h“或者“d3dx9.h”或者“D3DX9.LIB“:No such file of directory