python实现感知器


Posted in Python onDecember 19, 2017

上篇博客转载了关于感知器的用法,遂这篇做个大概总结,并实现一个简单的感知器,也为了加深自己的理解。

感知器是最简单的神经网络,只有一层。感知器是模拟生物神经元行为的机器。感知器的模型如下:

python实现感知器

给定一个n维的输入 ,其中w和b是参数,w为权重,每一个输入对应一个权值,b为偏置项,需要从数据中训练得到。

激活函数 感知器的激活函数可以有很多选择,比如我们可以选择下面这个阶跃函数f来作为激活函数:

python实现感知器

输出为:

python实现感知器

事实上感知器可以拟合任何线性函数,任何线性分类或线性回归的问题都可以用感知器来解决。但是感知器不能实现异或运算,当然所有的线性分类器都不可能实现异或操作。

所谓异或操作:

python实现感知器

二维分布图为:

python实现感知器

对于上图,我们找不到一条直线可以将0,1类分开。对于and操作,感知器可以实现,我们可以找到一条直线把其分为两部分。。

对于and操作:

python实现感知器

对应的二维分布图为:

python实现感知器

感知器的训练 

首先将权重w和 偏置b随机初始化为一个很小的数,然后在训练中不断更新w和b的值。

1.将权重初始化为 0 或一个很小的随机数
2.对于每个训练样本 x(i) 执行下列步骤: 

   计算输出值 y^.

   更新权重

python实现感知器

其中python实现感知器

下面用感知器实现and操作,具体代码如下:

# -*- coding: utf-8 -*- 
# python 3.4 
import numpy as np 
from random import choice 
from sklearn import cross_validation 
from sklearn.linear_model import LogisticRegression 
''''' 
1.将权重初始化为 0 或一个很小的随机数 
2.对于每个训练样本 x(i) 执行下列步骤: 
 计算输出值 y^. 
 更新权重 
''' 
def load_data(): 
 input_data=[[1,1], [0,0], [1,0], [0,1]] 
 labels=[1,0,0,0] 
 return input_data,labels 
 
  
def train_pre(input_data,y,iteration,rate): 
 #=========================== 
 ''''' 
 参数: 
 input_data:输入数据 
 y:标签列表 
 iteration:训练轮数 
 rate:学习率 
  
 ''' 
 #============================ 
 unit_step = lambda x: 0 if x < 0 else 1 
 w=np.random.rand(len(input_data[0]))#随机生成[0,1)之间,作为初始化w 
 bias=0.0#偏置 
  
  
 for i in range(iteration): 
  samples= zip(input_data,y) 
  for (input_i,label) in samples:#对每一组样本 
   #计算f(w*xi+b),此时x有两个 
   result=input_i*w+bias 
   result=float(sum(result)) 
   y_pred=float(unit_step(result))#计算输出值 y^ 
   w=w+rate*(label-y_pred)*np.array(input_i)#更新权重 
 
   bias=rate*(label-y_pred)#更新bias 
 return w,bias   
 
  
def predict(input_i,w,b): 
 unit_step = lambda x: 0 if x < 0 else 1#定义激活函数 
 result=result=result=input_i*w+b 
 result=sum(result) 
 y_pred=float(unit_step(result)) 
 print(y_pred) 
  
if __name__=='__main__': 
 input_data,y=load_data() 
 w,b=train_pre(input_data,y,20,0.01) 
 predict([1,1],w,b)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python写xml文件的操作实例
Oct 05 Python
跟老齐学Python之关于类的初步认识
Oct 11 Python
python映射列表实例分析
Jan 26 Python
python学习之编写查询ip程序
Feb 27 Python
Python 实现数据库(SQL)更新脚本的生成方法
Jul 09 Python
Python中那些 Pythonic的写法详解
Jul 02 Python
python字符串中匹配数字的正则表达式
Jul 03 Python
pycharm编写spark程序,导入pyspark包的3中实现方法
Aug 02 Python
深入了解如何基于Python读写Kafka
Dec 31 Python
Python matplotlib修改默认字体的操作
Mar 05 Python
Python如何输出整数
Jun 07 Python
python获取对象信息的实例详解
Jul 07 Python
python绘制简单折线图代码示例
Dec 19 #Python
matplotlib设置legend图例代码示例
Dec 19 #Python
matplotlib中legend位置调整解析
Dec 19 #Python
python实现感知器算法详解
Dec 19 #Python
python绘制条形图方法代码详解
Dec 19 #Python
Python实现两款计算器功能示例
Dec 19 #Python
Python构建网页爬虫原理分析
Dec 19 #Python
You might like
php 使用post,get的一种简洁方式
2010/04/25 PHP
PHP中$_SERVER的详细参数与说明介绍
2013/10/26 PHP
php数组排序usort、uksort与sort函数用法
2014/11/17 PHP
PHP实现通过Luhn算法校验信用卡卡号是否有效
2015/03/23 PHP
php resizeimage 部分jpg文件 生成缩略图失败的原因分析及解决办法
2016/03/23 PHP
PHP封装返回Ajax字符串和JSON数组的方法
2017/02/17 PHP
基于jquery的无缝循环新闻列表插件
2011/03/07 Javascript
Javascript Ajax异步读取RSS文档具体实现
2013/12/12 Javascript
JavaScript实现俄罗斯方块游戏过程分析及源码分享
2015/03/23 Javascript
JS脚本实现动态给标签控件添加事件的方法
2016/06/02 Javascript
jQuery实现简单的网页换肤效果示例
2016/09/18 Javascript
js遍历获取表格内数据的方法(必看)
2017/04/06 Javascript
jQuery EasyUI 为Combo,Combobox添加清除值功能的实例
2017/04/13 jQuery
Vue v2.4中新增的$attrs及$listeners属性使用教程
2018/01/08 Javascript
vue移动端html5页面根据屏幕适配的四种解决方法
2018/10/19 Javascript
在vue中高德地图引入和轨迹的绘制的实现
2019/10/11 Javascript
jQuery实现中奖播报功能(让文本滚动起来) 简单设置数值即可
2020/03/20 jQuery
实例讲解React 组件
2020/07/07 Javascript
使用python删除nginx缓存文件示例(python文件操作)
2014/03/26 Python
Python网络爬虫出现乱码问题的解决方法
2017/01/05 Python
Python的装饰器使用详解
2017/06/26 Python
Python实现的多线程同步与互斥锁功能示例
2017/11/30 Python
Django实现登录随机验证码的示例代码
2018/06/20 Python
Pycharm之快速定位到某行快捷键的方法
2019/01/20 Python
python elasticsearch从创建索引到写入数据的全过程
2019/08/04 Python
中国专业的综合网上购物商城:京东
2016/08/02 全球购物
中国首家奢侈品O2O网购平台:第五大道奢侈品网
2017/12/14 全球购物
StudentUniverse英国:学生航班、酒店和旅游
2019/08/25 全球购物
大型活动组织方案
2014/05/10 职场文书
我的中国梦演讲稿800字
2014/08/19 职场文书
民主评议党员自我鉴定
2014/10/21 职场文书
生产车间主任岗位职责
2015/04/08 职场文书
2015暑期爱心支教策划书
2015/07/14 职场文书
导游词之金鞭溪风景区
2019/09/12 职场文书
vue backtop组件的实现完整代码
2021/04/07 Vue.js
node.js使用express-fileupload中间件实现文件上传
2021/07/16 Javascript