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实例分享:快速查找出被挂马的文件
Jun 08 Python
Python3实现抓取javascript动态生成的html网页功能示例
Aug 22 Python
Python实现小数转化为百分数的格式化输出方法示例
Sep 20 Python
python3利用ctypes传入一个字符串类型的列表方法
Feb 12 Python
深入浅析Python中的迭代器
Jun 04 Python
pytorch实现CNN卷积神经网络
Feb 19 Python
Python实现SMTP邮件发送
Jun 16 Python
使用TensorBoard进行超参数优化的实现
Jul 06 Python
python利用os模块编写文件复制功能——copy()函数用法
Jul 13 Python
Python图像处理二值化方法实例汇总
Jul 24 Python
基于Python-Pycharm实现的猴子摘桃小游戏(源代码)
Feb 20 Python
python数据分析之用sklearn预测糖尿病
Apr 22 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 字符串替换的方法
2012/01/10 PHP
实例介绍PHP中zip_open()函数用法
2019/02/15 PHP
php layui实现前端多图上传实例
2019/07/30 PHP
javascript 表单规则集合对象
2009/07/21 Javascript
jquery 学习之二 属性(类)
2010/11/25 Javascript
jQuery统计指定子元素数量的方法
2015/03/17 Javascript
jquery图片倾斜层叠切换特效代码分享
2015/08/27 Javascript
jQuery实现的点赞随机数字显示动画效果(附在线演示与demo源码下载)
2015/12/31 Javascript
微信小程序开发经验总结(推荐)
2017/01/11 Javascript
jQuery实现在新增加的元素上添加事件方法案例分析
2017/02/09 Javascript
jQuery中table数据的值拷贝和拆分
2017/03/19 Javascript
Vue键盘事件用法总结
2017/04/18 Javascript
JavaScript 截取字符串代码实例
2019/09/05 Javascript
微信小程序实现上传多张图片、删除图片
2020/07/29 Javascript
小程序实现可拖动的悬浮按钮
2020/09/07 Javascript
vue.js实现点击图标放大离开时缩小的代码
2021/01/27 Vue.js
Python发送Email方法实例
2014/08/21 Python
部署Python的框架下的web app的详细教程
2015/04/30 Python
如何使用pandas读取txt文件中指定的列(有无标题)
2020/03/05 Python
Python发送邮件封装实现过程详解
2020/05/09 Python
荷兰牛仔裤网上商店:Jeans Centre
2018/04/03 全球购物
UNDONE手表官网:世界领先的定制手表品牌
2018/11/13 全球购物
应届毕业生的个人自我鉴定
2013/10/24 职场文书
秋季开学典礼主持词
2014/03/19 职场文书
考核评语大全
2014/04/29 职场文书
高考励志标语
2014/06/05 职场文书
拒绝黄毒毒宣传标语
2014/06/26 职场文书
离职感谢信怎么写
2015/01/22 职场文书
坎儿井导游词
2015/02/09 职场文书
数学教师求职信范文
2015/03/20 职场文书
宿舍管理制度范本
2015/08/07 职场文书
2016年五一国际劳动节活动总结
2016/04/06 职场文书
导游词之峨眉乐山/兵马俑/北京故宫御花园
2019/09/03 职场文书
分享3个非常实用的 Python 模块
2022/03/03 Python
如何通过简单的代码描述Angular父组件、子组件传值
2022/04/07 Javascript
JavaScript中reduce()的用法
2022/05/11 Javascript