python机器学习之神经网络(一)


Posted in Python onDecember 20, 2017

python有专门的神经网络库,但为了加深印象,我自己在numpy库的基础上,自己编写了一个简单的神经网络程序,是基于Rosenblatt感知器的,这个感知器建立在一个线性神经元之上,神经元模型的求和节点计算作用于突触输入的线性组合,同时结合外部作用的偏置,对若干个突触的输入求和后进行调节。为了便于观察,这里的数据采用二维数据。

目标函数是训练结果的误差的平方和,由于目标函数是一个二次函数,只存在一个全局极小值,所以采用梯度下降法的策略寻找目标函数的最小值。

代码如下:

import numpy as np 
import pylab as pl 
b=1    #偏置 
a=0.3   #学习率 
x=np.array([[b,1,3],[b,2,3],[b,1,8],[b,2,15],[b,3,7],[b,4,29],[b,4,8],[b,4,20]]) #训练数据 
d=np.array([1,1,-1,-1,1,-1,1,-1])          #训练数据类别 
w=np.array([b,0,0])            #初始w 
def sgn(v):         
 if v>=0: 
  return 1 
 else: 
  return -1 
def comy(myw,myx): 
 return sgn(np.dot(myw.T,myx)) 
def neww(oldw,myd,myx,a): 
 return oldw+a*(myd-comy(oldw,myx))*myx 
 
for ii in range(5):        #迭代次数 
 i=0 
 for xn in x: 
  w=neww(w,d[i],xn,a) 
  i+=1 
 print w 
 
myx=x[:,1]         #绘制训练数据 
myy=x[:,2] 
pl.subplot(111) 
x_max=np.max(myx)+15 
x_min=np.min(myx)-5 
y_max=np.max(myy)+50 
y_min=np.min(myy)-5 
pl.xlabel(u"x") 
pl.xlim(x_min,x_max) 
pl.ylabel(u"y") 
pl.ylim(y_min,y_max) 
for i in range(0,len(d)): 
 if d[i]==1: 
  pl.plot(myx[i],myy[i],'r*') 
 else: 
  pl.plot(myx[i],myy[i],'ro') 
#绘制测试点 
test=np.array([b,9,19]) 
if comy(w,test)>0: 
 pl.plot(test[1],test[2],'b*') 
else: 
 pl.plot(test[1],test[2],'bo') 
test=np.array([b,9,64]) 
if comy(w,test)>0: 
 pl.plot(test[1],test[2],'b*') 
else: 
 pl.plot(test[1],test[2],'bo') 
test=np.array([b,9,16]) 
if comy(w,test)>0: 
 pl.plot(test[1],test[2],'b*') 
else: 
 pl.plot(test[1],test[2],'bo') 
test=np.array([b,9,60]) 
if comy(w,test)>0: 
 pl.plot(test[1],test[2],'b*') 
else: 
 pl.plot(test[1],test[2],'bo') 
#绘制分类线 
testx=np.array(range(0,20)) 
testy=testx*2+1.68 
pl.plot(testx,testy,'g--') 
pl.show()  
for xn in x: 
 print "%d %d => %d" %(xn[1],xn[2],comy(w,xn))

python机器学习之神经网络(一)

图中红色是训练数据,蓝色是测试数据,圆点代表类别-1.星点代表类别1。由图可知,对于线性可分的数据集,Rosenblatt感知器的分类效果还是不错的。

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

Python 相关文章推荐
Python设计模式中单例模式的实现及在Tornado中的应用
Mar 02 Python
Python 多线程实例详解
Mar 25 Python
Python通过future处理并发问题
Oct 17 Python
多个应用共存的Django配置方法
May 30 Python
pandas 将list切分后存入DataFrame中的实例
Jul 03 Python
flask框架使用orm连接数据库的方法示例
Jul 16 Python
Python面向对象之类和对象属性的增删改查操作示例
Dec 14 Python
Python 利用pydub库操作音频文件的方法
Jan 09 Python
windows环境中利用celery实现简单任务队列过程解析
Nov 29 Python
Python实现投影法分割图像示例(二)
Jan 17 Python
快速解释如何使用pandas的inplace参数的使用
Jul 23 Python
Python3.7安装PyQt5 运行配置Pycharm的详细教程
Oct 15 Python
使用python实现ANN
Dec 20 #Python
python 计算数组中每个数字出现多少次--“Bucket”桶的思想
Dec 19 #Python
浅谈Python实现贪心算法与活动安排问题
Dec 19 #Python
Python实现感知器模型、两层神经网络
Dec 19 #Python
python实现感知器
Dec 19 #Python
python绘制简单折线图代码示例
Dec 19 #Python
matplotlib设置legend图例代码示例
Dec 19 #Python
You might like
配置php网页显示各种语法错误
2013/09/23 PHP
PHP实现上传多图即时显示与即时删除的方法
2017/05/09 PHP
thinkphp中的多表关联查询的实例详解
2017/10/12 PHP
js压缩利器
2007/02/20 Javascript
Javascript 读书笔记索引贴
2010/01/11 Javascript
jQuery实现的一个自定义Placeholder属性插件
2014/08/11 Javascript
超炫的jquery仿flash导航栏特效
2014/11/11 Javascript
JavaScript中的Object对象学习教程
2016/05/20 Javascript
JS实现控制文本框的内容
2016/07/10 Javascript
canvas绘制的直线动画
2017/01/23 Javascript
详解RequireJS按需加载样式文件
2017/04/12 Javascript
微信小程序教程系列之新建页面(4)
2017/04/17 Javascript
使用typescript开发angular模块并发布npm包
2018/04/19 Javascript
js实现图片局部放大效果详解
2019/03/18 Javascript
Vue 实现点击空白处隐藏某节点的三种方式(指令、普通、遮罩)
2019/10/23 Javascript
vant-ui组件调用Dialog弹窗异步关闭操作
2020/11/04 Javascript
js 执行上下文和作用域的相关总结
2021/02/08 Javascript
python使用webbrowser浏览指定url的方法
2015/04/04 Python
Django中处理出错页面的方法
2015/07/15 Python
Python实现将json文件中向量写入Excel的方法
2018/03/26 Python
浅谈python requests 的put, post 请求参数的问题
2019/01/02 Python
Python Numpy数组扩展repeat和tile使用实例解析
2019/12/09 Python
Python+OpenCV+图片旋转并用原底色填充新四角的例子
2019/12/12 Python
Python reversed函数及使用方法解析
2020/03/17 Python
python3的pip路径在哪
2020/06/23 Python
python打开文件的方式有哪些
2020/06/29 Python
Python学习笔记之装饰器
2020/08/06 Python
Python request中文乱码问题解决方案
2020/09/17 Python
意大利网上药房:Farmacia 33
2020/01/27 全球购物
程序集与命名空间有什么不同
2014/07/25 面试题
小学教师的自我评价范例
2013/10/31 职场文书
员工薪酬激励方案
2014/06/13 职场文书
导游词之开封禹王台风景区
2019/12/02 职场文书
php 防护xss,PHP的防御XSS注入的终极解决方案
2021/04/01 PHP
Python入门学习之类的相关知识总结
2021/05/25 Python
特别篇动画《总之就是非常可爱 ~制服~》PV公开,2022年夏季播出
2022/04/04 日漫