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 IDLE加上自动补全和历史功能
Nov 30 Python
Python中的默认参数详解
Jun 24 Python
举例讲解如何在Python编程中进行迭代和遍历
Jan 19 Python
python 时间戳与格式化时间的转化实现代码
Mar 23 Python
Python切片工具pillow用法示例
Mar 30 Python
Python简单计算给定某一年的某一天是星期几示例
Jun 27 Python
Python中的Numpy矩阵操作
Aug 12 Python
Python初学者常见错误详解
Jul 02 Python
python3 图片 4通道转成3通道 1通道转成3通道 图片压缩实例
Dec 03 Python
python实现将json多行数据传入到mysql中使用
Dec 31 Python
Python处理PDF与CDF实例
Feb 26 Python
Java如何基于wsimport调用wcf接口
Jun 17 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之第七天
2006/10/09 PHP
PHP连接MySQL数据的操作要点
2015/03/20 PHP
精心挑选的15个jQuery下拉菜单制作教程
2012/06/15 Javascript
IE8对JS通过属性和数组遍历解析不一样的地方探讨
2013/05/06 Javascript
JavaScript基础篇之变量作用域、传值、传址的简单介绍与实例
2013/06/29 Javascript
JS实现带有抽屉效果的产品类网站多级导航菜单代码
2015/09/15 Javascript
jQuery实现横向带缓冲的水平运动效果(附demo源码下载)
2016/01/29 Javascript
基于CSS3和jQuery实现跟随鼠标方位的Hover特效
2016/07/25 Javascript
js获取html的span标签的值方法(超简单)
2016/07/26 Javascript
JS实现简单的二元方程计算器功能示例
2017/01/03 Javascript
canvas压缩图片转换成base64格式输出文件流
2017/03/09 Javascript
解决vue router使用 history 模式刷新后404问题
2017/07/19 Javascript
vuex与组件联合使用的方法
2018/05/10 Javascript
微信小程序实现文字从右向左无限滚动
2020/11/18 Javascript
JS实现li标签的删除
2019/04/12 Javascript
使用jQuery mobile NuGet让你的网站在移动设备上同样精彩
2019/06/18 jQuery
微信小程序实现左侧滑栏过程解析
2019/08/26 Javascript
JS写滑稽笑脸运动效果
2020/05/28 Javascript
[56:12]LGD vs Optic Supermajor小组赛D组胜者组决赛 BO3 第一场 6.3
2018/06/04 DOTA
python 排序算法总结及实例详解
2016/09/28 Python
python Celery定时任务的示例
2018/03/13 Python
每天迁移MySQL历史数据到历史库Python脚本
2018/04/13 Python
python对excel文档去重及求和的实例
2018/04/18 Python
利用python3 的pygame模块实现塔防游戏
2019/12/30 Python
HTML5+CSS3绘制锯齿状的矩形
2016/03/01 HTML / CSS
Marriott中国:万豪国际酒店查询预订
2016/09/02 全球购物
荷兰网上买鞋:MooieSchoenen.nl
2017/09/12 全球购物
马来西亚在线购物市场:PGMall.my
2019/10/13 全球购物
大一学生的职业生涯规划书范文
2014/01/19 职场文书
《学会待客》教学反思
2014/02/22 职场文书
党的群众路线教育实践活动个人自我剖析材料
2014/10/07 职场文书
教师师德表现自我评价
2015/03/05 职场文书
图文详解Nginx版本平滑升级方案
2021/09/15 Servers
JS数组方法some、every和find的使用详情
2021/10/05 Javascript
HTTP中的Content-type详解
2022/01/18 HTML / CSS
如何使用python包中的sched事件调度器
2022/04/30 Python