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使用rabbitmq实现网络爬虫示例
Feb 20 Python
python实现简单socket程序在两台电脑之间传输消息的方法
Mar 13 Python
python smtplib模块发送SSL/TLS安全邮件实例
Apr 08 Python
Python英文文本分词(无空格)模块wordninja的使用实例
Feb 20 Python
pyinstaller打包多个py文件和去除cmd黑框的方法
Jun 21 Python
Python CVXOPT模块安装及使用解析
Aug 01 Python
django基于cors解决跨域请求问题详解
Aug 06 Python
python os.path.isfile()因参数问题判断错误的解决
Nov 29 Python
Python发送手机动态验证码代码实例
Feb 28 Python
在keras里实现自定义上采样层
Jun 28 Python
无惧面试,带你搞懂python 装饰器
Aug 17 Python
Django中celery的使用项目实例
Jul 07 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中使用Oracle数据库(6)
2006/10/09 PHP
将RTF格式的文件转成HTML并在网页中显示的代码
2006/10/09 PHP
PHP自带方法验证邮箱、URL、IP是否合法的函数
2016/12/08 PHP
基于jquery封装的一个js分页
2011/11/15 Javascript
跨域传值即主页面与iframe之间互相传值
2013/12/09 Javascript
js设置function参数默认值(适合没有传参情况)
2014/02/24 Javascript
JavaScript获取指定元素位置的方法
2015/04/08 Javascript
Bootstrap自动适应PC、平板、手机的Bootstrap栅格系统
2016/05/27 Javascript
Vue.js每天必学之构造器与生命周期
2016/09/05 Javascript
Bootstrap fileinput组件封装及使用详解
2017/03/10 Javascript
关于javascript获取内联样式与嵌入式样式的实例
2017/06/01 Javascript
JavaScript门道之标准库
2018/05/26 Javascript
JavaScript实现的简单Tab点击切换功能示例
2018/07/06 Javascript
JavaScript创建对象方式总结【工厂模式、构造函数模式、原型模式等】
2018/12/19 Javascript
[jQuery] 事件和动画详解
2019/03/05 jQuery
scrapyd schedule.json setting 传入多个值问题
2019/08/07 Javascript
nodejs对mongodb数据库的增加修删该查实例代码
2020/01/05 NodeJs
vue监听dom大小改变案例
2020/07/29 Javascript
[03:09]显微镜下的DOTA2第一期——带你走进华丽的DOTA2世界
2014/06/20 DOTA
Windows8下安装Python的BeautifulSoup
2015/01/22 Python
Python中函数的参数传递与可变长参数介绍
2015/06/30 Python
Python3中使用PyMongo的方法详解
2017/07/28 Python
python3 pathlib库Path类方法总结
2019/12/26 Python
Python 使用 prettytable 库打印表格美化输出功能
2019/12/26 Python
基于python代码批量处理图片resize
2020/06/04 Python
python把一个字符串切开的实例方法
2020/09/27 Python
Python 内存管理机制全面分析
2021/01/16 Python
HTML5中的强制下载属性download使用实例解析
2016/05/12 HTML / CSS
北欧最好的童装网上商店:Babyshop
2019/09/15 全球购物
计算机专业毕业生的自我评价
2013/11/18 职场文书
初中英语教学反思
2014/01/25 职场文书
个人承诺书怎么写
2014/05/24 职场文书
身边的榜样活动方案
2014/08/20 职场文书
会计主管竞聘书
2015/09/15 职场文书
承诺书的签字人,需不需要承担相应的责任?
2019/07/09 职场文书
Nginx报错104:Connection reset by peer问题的解决及分析
2022/07/23 Servers