感知器及其在python中的实现_感知器及其Python实现
感知器是由美国计算机科学家罗森布拉特(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实现相关推荐
- 感知器及其在python中的实现_感知器及其在Python中的实现
什么是感知器? 生物神经元示意图 感知器的概念类似于大脑基本处理单元神经元的工作原理.神经元由许多由树突携带的输入信号.胞体和轴突携带的一个输出信号组成.当细胞达到特定阈值时,神经元会发出一个动作信号 ...
- c++中的引用和python中的引用_对比 C++ 和 Python,谈谈指针与引用
作者 | 樱雨楼 引言 指针(Pointer)是 C.C++ 以及 Java.Go 等语言的一个非常核心且重要的概念,而引用(Reference)是在指针的基础上构建出的一个同样重要的概念. 指针对于 ...
- 正则表达式在python中的应用_学习正则表达式在python中的应用
目的:对文本的处理,正则表达式的功能很强大,可以很巧妙的过滤.匹配.获取想要的字符串,是必须学习的技能,这里只记录常用的写法,详细文档可以参看官方帮助文档. 环境:ubuntu 16.04 pytho ...
- Python中表示偶数_蒙特卡洛模拟(Python)深入教程
译者:大表哥.wiige来源:AI研习社 什么是蒙特卡罗模拟? 蒙特卡罗方法是一种使用随机数和概率来解决复杂问题的技术.蒙特卡罗模拟或概率模拟是一种技术,用于了解金融部门.项目管理.成本和其他预测机器 ...
- python中cmd全称_【转】Python中执行cmd的三种方式
原文链接:http://blog.csdn.net/menglei8625/article/details/7494094 目前我使用到的python中执行cmd的方式有三种: 1. 使用os.sys ...
- python中数据读写_【循序渐进学Python——文件中数据的读写以及操作】
[循序渐进学Python--文件中数据的读写以及操作] [循序渐进学Python--文件中数据的读写以及操作] [循序渐进学Python--文件中数据的读写以及操作] 相信大家都想过自己有一天,可以用 ...
- python中文件分类_李亚涛:python实现电脑文件一键分类
原标题:李亚涛:python实现电脑文件一键分类 python还挺好玩的,可以做蛮多事情! 比如桌面非常非常多的文件,想要整理一下,也可以用到python 比如我就自己写了个程序,整理文件就是运行一下 ...
- python中imread用法_【转载】Python 中各种imread函数的区别与联系
Python 中各种imread函数的区别与联系 最近一直在用python做图像处理相关的东西,被各种imread函数搞得很头疼,因此今天决定将这些imread总结一下,以免以后因此犯些愚蠢的错误.如 ...
- 如何在python中制作超级玛丽_教你利用Python写一款超级玛丽,零基础也能学会,超级装逼...
PS注意:很多人学Python过程中会遇到各种烦恼问题,没有人解答容易放弃.为此小编建了个Python全栈免费答疑.裙 :七衣衣九七七巴而五(数字的谐音)转换下可以找到了,不懂的问题有老司机解决里面还 ...
最新文章
- 【最短路】 ZOJ 1544 Currency Exchange 推断负圈
- 转:js-sdk探索之微信网页分享
- 题库练习2(随机数去重排序、分割字符串、进制转换)
- 问到ConcurrentHashMap不要再提Segment了
- 舞力全开加速_国行舞力全开评测:丝滑得不像是育碧服务器!
- Vue.js:监听属性
- 分布式ID-雪花算法
- Django--ORM基本操作
- Js事件对象EventUtil
- access中判断回文的代码_前端也来点算法(TypeScript版) | 2 - 回文数和回文链表
- 第1章 数据可视化概述
- 随机游走问题的神奇应用(三)
- (day 17 - 快排)剑指 Offer 40. 最小的k个数
- mysql 分库备份
- BooKu手机电子书阅读器,正式推出了
- java 上传csv/xslx文件,预览,导入到数据库中
- 八大常用基础电路保护器件作用
- SyntaxError: (unicode error) ‘utf-8‘ codec can‘t decode byte 0xca in position 0: invalid continuati
- 智慧城市,离我们还有多远?
- 信号的调制与解调matlab仿真,基于MATLAB对信号调制与解调的仿真
热门文章
- zk安装启动(windows版本)
- topas 解释(AIX下的top)
- word2013从第三页设置页码,页码格式为page X of Y
- 记一次Chrome冒充QQ浏览器领取奖励之行
- 二进制文件被拒_求助官方,app被拒绝几次了,二进制文件被拒绝
- 它便是那只大闹天宫的泼猴,今生注定不凡
- 关于使用fgetc函数和feof函数的一些注意事项
- 切换摄像头操作(前置、后置)
- 基于Android7.0的Launcher3源码分析(1)——框架设计分析
- VS报错信息:无法打开包括文件:“d3dx9math.h“或者“d3dx9.h”或者“D3DX9.LIB“:No such file of directory