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中为feedparser设置超时时间避免堵塞
Sep 28 Python
Python中有趣在__call__函数
Jun 21 Python
Python读取文件内容的三种常用方式及效率比较
Oct 07 Python
Python中的Django基本命令实例详解
Jul 15 Python
Python django使用多进程连接mysql错误的解决方法
Oct 08 Python
pygame游戏之旅 游戏中添加显示文字
Nov 20 Python
Python高级特性与几种函数的讲解
Mar 08 Python
为什么你还不懂得怎么使用Python协程
May 13 Python
Python实现字符串中某个字母的替代功能
Oct 21 Python
浅谈Python协程
Jun 17 Python
浅谈keras使用中val_acc和acc值不同步的思考
Jun 18 Python
Python连续赋值需要注意的一些问题
Jun 03 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隐形一句话后门,和ThinkPHP框架加密码程序(base64_decode)
2011/11/02 PHP
深入php list()函数的详解
2013/06/05 PHP
CSS心形加载的动画源码的实现
2021/03/09 HTML / CSS
JS实现div内部的文字或图片自动循环滚动代码
2013/04/19 Javascript
jQuery点击弹出下拉菜单的小例子
2013/08/01 Javascript
jQuery实现点击后标记当前菜单位置(背景高亮菜单)效果
2015/08/22 Javascript
快速学习jQuery插件 jquery.validate.js表单验证插件使用方法
2015/12/01 Javascript
javascript中的作用域和闭包详解
2016/01/13 Javascript
yii form 表单提交之前JS在提交按钮的验证方法
2017/03/15 Javascript
Angular 2父子组件数据传递之@Input和@Output详解(下)
2017/07/05 Javascript
基于zepto.js实现登录界面
2017/10/09 Javascript
基于vue.js无缝滚动效果
2018/01/25 Javascript
AngularJS日期格式化常见操作实例分析
2018/05/17 Javascript
jQuery实现列表的增加和删除功能
2018/06/14 jQuery
jquery实现图片放大镜效果
2020/12/23 jQuery
python远程登录代码
2008/04/29 Python
Python入门之三角函数全解【收藏】
2017/11/08 Python
python list格式数据excel导出方法
2018/10/31 Python
使用python的pandas为你的股票绘制趋势图
2019/06/26 Python
python打包exe开机自动启动的实例(windows)
2019/06/28 Python
python 将字符串中的数字相加求和的实现
2019/07/18 Python
nginx+uwsgi+django环境搭建的方法步骤
2019/11/25 Python
TensorBoard 计算图的可视化实现
2020/02/15 Python
CSS实现限制字数功能当对象内文本溢出时显示省略标记
2014/08/20 HTML / CSS
css3一个简易的 LED 数字时钟实现方法
2020/01/15 HTML / CSS
介绍一下Cookie和Session及他们之间的区别
2012/11/20 面试题
Java语言程序设计测试题改错题部分
2014/07/22 面试题
小学运动会广播稿200字(十二篇)
2014/01/14 职场文书
党课培训主持词
2014/04/01 职场文书
珍爱生命演讲稿
2014/05/10 职场文书
2014年体育教学工作总结
2014/12/09 职场文书
领导欢迎词致辞
2015/01/23 职场文书
郭明义电影观后感
2015/06/08 职场文书
投诉书格式范本
2015/07/02 职场文书
借钱欠条怎么写
2015/07/03 职场文书
小学数学继续教育研修日志
2015/11/13 职场文书