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牛刀小试密码爆破
Feb 03 Python
用Python的SimPy库简化复杂的编程模型的介绍
Apr 13 Python
用ReactJS和Python的Flask框架编写留言板的代码示例
Dec 19 Python
Windows下Eclipse+PyDev配置Python+PyQt4开发环境
May 17 Python
关于Python中Inf与Nan的判断问题详解
Feb 08 Python
Python使用defaultdict读取文件各列的方法
May 11 Python
解决pycharm界面不能显示中文的问题
May 23 Python
python爬虫获取小区经纬度以及结构化地址
Dec 30 Python
python生成每日报表数据(Excel)并邮件发送的实例
Feb 03 Python
详解如何从TensorFlow的mnist数据集导出手写体数字图片
Aug 05 Python
Python使用tkinter实现小时钟效果
Feb 22 Python
python 爬取京东指定商品评论并进行情感分析
May 27 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 移除数组重复元素的一点说明
2008/11/27 PHP
destoon实现公司新闻详细页添加评论功能的方法
2014/07/15 PHP
php实现将wav文件转换成图像文件并在页面中显示的方法
2015/04/21 PHP
PHP实现搜索地理位置及计算两点地理位置间距离的实例
2016/01/08 PHP
CentOS7系统搭建LAMP及更新PHP版本操作详解
2020/03/26 PHP
巧妙破除网页右键禁用的十大绝招
2006/08/12 Javascript
jQuery 表格插件整理
2010/04/27 Javascript
理解Javascript_12_执行模型浅析
2010/10/18 Javascript
javascript阻止浏览器后退事件防止误操作清空表单
2013/11/22 Javascript
jquery获取URL中参数解决中文乱码问题的两种方法
2013/12/18 Javascript
深入理解JavaScript系列(31):设计模式之代理模式详解
2015/03/03 Javascript
javascript搜索框效果实现方法
2015/05/14 Javascript
详解JavaScript的另类写法
2016/04/11 Javascript
Bootstrap实现带暂停功能的轮播组件(推荐)
2016/11/25 Javascript
javascript函数的四种调用模式
2017/01/08 Javascript
基于BootStrap的前端分页带省略号和上下页效果
2017/05/18 Javascript
带你了解session和cookie作用原理区别和用法
2017/08/14 Javascript
浅谈angular4生命周期钩子
2017/09/05 Javascript
jquery使用FormData实现异步上传文件
2018/10/25 jQuery
详解React路由传参方法汇总记录
2020/11/29 Javascript
[16:04]DOTA2海涛带你玩炸弹 9月5日更新内容详解
2014/09/05 DOTA
python中requests小技巧
2017/05/10 Python
python实现写数字文件名的递增保存文件方法
2018/10/25 Python
关于python下cv.waitKey无响应的原因及解决方法
2019/01/10 Python
python命令 -u参数用法解析
2019/10/24 Python
python访问hdfs的操作
2020/06/06 Python
python openpyxl模块的使用详解
2021/02/25 Python
css3实现椭圆轨迹旋转的示例代码
2018/10/29 HTML / CSS
美国折扣地毯销售网站:Rugs.com
2020/03/27 全球购物
工业自动化专业毕业生推荐信
2013/11/18 职场文书
乡镇纠风工作实施方案
2014/03/22 职场文书
人事专员岗位说明书
2014/07/29 职场文书
英语通知范文
2015/04/22 职场文书
2015初中政教处工作总结
2015/07/21 职场文书
SpringBoot整合MongoDB的实现步骤
2021/06/23 MongoDB
Redis特殊数据类型Geospatial地理空间
2022/06/01 Redis