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编写android截屏脚本双击运行即可
Jul 21 Python
详解Python3中字符串中的数字提取方法
Jan 14 Python
python中字符串类型json操作的注意事项
May 02 Python
python利用OpenCV2实现人脸检测
Apr 16 Python
python队列通信:rabbitMQ的使用(实例讲解)
Dec 22 Python
Python实现定时执行任务的三种方式简单示例
Mar 30 Python
python多继承(钻石继承)问题和解决方法简单示例
Oct 21 Python
使用Python 自动生成 Word 文档的教程
Feb 13 Python
Mac PyCharm中的.gitignore 安装设置教程
Apr 16 Python
pytorch读取图像数据转成opencv格式实例
Jun 02 Python
python 爬取免费简历模板网站的示例
Sep 27 Python
python pyg2plot的原理知识点总结
Feb 28 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
「OVERLORD」动画重要删减!雅儿贝德的背叛?至尊猎杀队结成
2020/04/09 日漫
PHP用户指南-cookies部分
2006/10/09 PHP
javascript去除字符串左右两端的空格
2015/02/05 Javascript
javascript入门之window对象【新手必看】
2016/11/22 Javascript
Vue中定义全局变量与常量的各种方式详解
2017/08/23 Javascript
深入理解Node module模块
2018/03/26 Javascript
详解vue中点击空白处隐藏div的实现(用指令实现)
2018/04/19 Javascript
Vue项目报错:Uncaught SyntaxError: Unexpected token
2018/11/10 Javascript
微信接入之获取用户头像的方法步骤
2019/09/23 Javascript
Vue防止白屏添加首屏动画的实例
2019/10/31 Javascript
Vue数据双向绑定底层实现原理
2019/11/22 Javascript
JavaScrip如果基于url实现图片下载
2020/07/03 Javascript
Python实现LRU算法的2种方法
2015/06/24 Python
python中matplotlib的颜色及线条控制的示例
2018/03/16 Python
Python实现的求解最大公约数算法示例
2018/05/03 Python
想学python 这5本书籍你必看!
2018/12/11 Python
浅谈python多进程共享变量Value的使用tips
2019/07/16 Python
Python过滤掉numpy.array中非nan数据实例
2020/06/08 Python
如何教少儿学习Python编程
2020/07/10 Python
Pycharm Plugins加载失败问题解决方案
2020/11/28 Python
html5使用Canvas绘图的使用方法
2017/11/21 HTML / CSS
Manuka Doctor英国官网:真正的麦卢卡蜂蜜和护肤品
2018/10/26 全球购物
街头时尚在线:JESSICABUURMAN
2019/06/16 全球购物
HSRP的含义以及如何工作
2014/09/10 面试题
机电一体化职业规划书
2014/01/07 职场文书
汽车运用工程专业求职信
2014/06/18 职场文书
村安全生产责任书
2014/08/25 职场文书
迎新生标语大全
2014/10/06 职场文书
募捐感谢信
2015/01/22 职场文书
傅雷家书读书笔记
2015/06/29 职场文书
2016元旦主持人开场白
2015/12/03 职场文书
2016廉洁从业学习心得体会
2016/01/19 职场文书
2016学雷锋优秀志愿者事迹材料
2016/02/25 职场文书
使用Python拟合函数曲线
2022/04/14 Python
vue 自定义的组件绑定点击事件
2022/04/21 Vue.js
python解析json数据
2022/04/29 Python