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

  下图是一个感知器:

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

01 输入权值:

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

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实现的更多相关文章

  1. 感知器算法--python实现

    写在前面: 参考: 1  <统计学习方法>第二章感知机[感知机的概念.误分类的判断]   http://pan.baidu.com/s/1hrTscza 2   点到面的距离 3   梯度 ...

  2. 机器学习之感知器算法原理和Python实现

    (1)感知器模型 感知器模型包含多个输入节点:X0-Xn,权重矩阵W0-Wn(其中X0和W0代表的偏置因子,一般X0=1,图中X0处应该是Xn)一个输出节点O,激活函数是sign函数. (2)感知器学 ...

  3. Python实现感知器的逻辑电路(与门、与非门、或门、异或门)

    在神经网络入门回顾(感知器.多层感知器)中整理了关于感知器和多层感知器的理论,这里实现关于与门.与非门.或门.异或门的代码,以便对感知器有更好的感觉. 此外,我们使用 pytest 框架进行测试. p ...

  4. 感知器做二分类的原理及python实现

    本文目录: 1. 感知器 2. 感知器的训练法则 3. 梯度下降和delta法则 4. python实现 1. 感知器[1] 人工神经网络以感知器(perceptron)为基础.感知器以一个实数值向量 ...

  5. python之感知器-从零开始学深度学习

    感知器-从零开始学深度学习 未来将是人工智能和大数据的时代,是各行各业使用人工智能在云上处理大数据的时代,深度学习将是新时代的一大利器,在此我将从零开始记录深度学习的学习历程. 我希望在学习过程中做到 ...

  6. 机器学习:Python实现单层Rosenblatt感知器

    如果对Rosenblatt感知器不了解,可以先查看下相关定义,然后对照下面的代码来理解. 代码中详细解释了各步骤的含义,有些涉及到了数学公式的解释. 这篇文章是以理解Rosenblatt感知器的原理为 ...

  7. 感知器python

    感知器学习的目标是求得一个能够将训练集正实例点和负实例点·完全正确分开的分离超平面.即找到这超平面的参数w,b. 超平面定义 w*x+b=0 其中w是参数,x是数据.公式很好理解以二维平面为例,w有两 ...

  8. python机器学习——感知器

    最近在看机器学习相关的书籍,顺便把每天阅读的部分写出来和大家分享,共同学习探讨一起进步!作为机器学习的第一篇博客,我准备从感知器开始,之后会慢慢更新其他内容. 在实现感知器算法前,我们需要先了解一下神 ...

  9. Rosenblatt感知器

    一.定义 Rosenblatt感知器建立在一个线性神经元之上,神经元模型的求和节点计算作用于突触输入的线性组合,同时结合外部作用的偏置,对若干个突触的输入项求和后进行调节. 二.基本计算过程 Rose ...

随机推荐

  1. 如何从git上clone一个项目

    今天想从自己的git上down下来代码,补充一些新的学习demo,不过因为平时工作中不适用git管理代码,所以,有些命令行忘记了.现在,通过这种方式再加深一遍印象吧. 那我就假设已经安装好了git了. ...

  2. Composite模式(组合设计模式)

    Composite 设计模式? 在计算机的文件系统中,有"文件夹"的概念(在有些操作系统(Linux操作系统)中,也称为"目录").文件夹里面既可以放入文件,也 ...

  3. Asp.net Core 创建控制器时出错问题记录(运行所选代码生成器时出错)

    问题描述:在创建一个MVC控制器(带读写,使用EF) 解决方法:添加nuget包

  4. List<Object> 使用Linq

    List<Asset> bdList = allAsset.Where(m => m.Owner.Depts == view.DeptName).ToList(); var quer ...

  5. spring boot(10) 基础学习内容

    A Spring boot(10) 基础学习内容 B SpringBoot(16) 基础学习内容

  6. POJ 2891 Strange Way to Express Integers 中国剩余定理MOD不互质数字方法

    http://poj.org/problem?id=2891 711323 97935537 475421538 1090116118 2032082 120922929 951016541 1589 ...

  7. HBase基础讲解

    HBase定义        HBase 是一个高可靠.高性能.面向列.可伸缩的分布式存储系统,利用Hbase技术可在廉价PC Server上搭建 大规模结构化存储集群.        HBase 是 ...

  8. launchctl

    Launchctl 系统启动时, 系统会以root用户的身份扫描/System/Library/LaunchDaemons和/Library/LaunchDaemons目录, 如果文件中有Disabl ...

  9. Cache 和 Buffer 区别是什么

    一 从常识来说,cache叫缓存,buffer叫缓冲. 二 尴尬的是缓存是什么?缓冲是什么? 缓冲,缓和冲击.也就是100次保存数据库,先把操作保存到本地,然后满10次才保存到数据库. 缓存,就是缓冲 ...

  10. idea关闭sonar自动扫描

    file-setting-other setting-sonar相关的setting全部关闭