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列表与元组详解实例
Nov 01 Python
python中os操作文件及文件路径实例汇总
Jan 15 Python
Python中IPYTHON入门实例
May 11 Python
python随机取list中的元素方法
Apr 08 Python
Python 读取指定文件夹下的所有图像方法
Apr 27 Python
django输出html内容的实例
May 27 Python
python钉钉机器人运维脚本监控实例
Feb 20 Python
python3 写一个WAV音频文件播放器的代码
Sep 27 Python
python使用beautifulsoup4爬取酷狗音乐代码实例
Dec 04 Python
Python实现动态循环输出文字功能
May 07 Python
Python中logger日志模块详解
Aug 04 Python
python Xpath语法的使用
Nov 26 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
不用mod_rewrite直接用php实现伪静态化页面代码
2008/10/04 PHP
php下使用strpos需要注意 === 运算符
2010/07/17 PHP
对PHP PDO的一些认识小结
2015/01/23 PHP
在WordPress中获取数据库字段内容和添加主题设置菜单
2016/01/11 PHP
微信支付开发告警通知实例
2016/07/12 PHP
PHP文件管理之实现网盘及压缩包的功能操作
2017/09/20 PHP
php命令行模式代码实例详解
2021/02/26 PHP
Alliance vs Liquid BO3 第二场2.13
2021/03/10 DOTA
JQuery与Ajax常用代码实现对比
2009/10/03 Javascript
JQuery实现table行折叠效果以JSON做数据源
2014/05/26 Javascript
浅析JavaScript中的array数组类型系统
2016/07/18 Javascript
Bootstrap源码学习笔记之bootstrap进度条
2016/12/24 Javascript
bootstrap 下拉多选框进行多选传值问题代码分析
2017/02/14 Javascript
使用Node.js实现ORM的一种思路详解(图文)
2017/10/24 Javascript
JavaScript中的ES6 Proxy的具体使用
2019/06/16 Javascript
解决vue-router 切换tab标签关闭时缓存问题
2020/07/22 Javascript
[03:30]DOTA2完美“圣”典精彩集锦
2016/12/27 DOTA
[24:42]VP vs TNC Supermajor小组赛B组 BO3 第三场 6.2
2018/06/03 DOTA
python实现简单socket程序在两台电脑之间传输消息的方法
2015/03/13 Python
Win10下Python环境搭建与配置教程
2016/11/18 Python
python测试mysql写入性能完整实例
2018/01/18 Python
python 异或加密字符串的实例
2018/10/14 Python
python实现大转盘抽奖效果
2019/01/22 Python
python滑块验证码的破解实现
2019/11/10 Python
python爬虫爬取笔趣网小说网站过程图解
2019/11/18 Python
Python简单实现区域生长方式
2020/01/16 Python
关于Keras模型可视化教程及关键问题的解决
2020/01/24 Python
老公给老婆的道歉信
2014/01/10 职场文书
交通事故赔偿协议书范本
2014/04/15 职场文书
党员公开承诺书2015
2015/01/21 职场文书
团代会开幕词
2015/01/28 职场文书
2015秋学期开学寄语
2015/05/28 职场文书
师范生小学见习总结
2015/06/23 职场文书
街道办残联2016年助残日活动总结
2016/04/01 职场文书
2019年大学推荐信
2019/06/24 职场文书
Mysql 数据库中的 redo log 和 binlog 写入策略
2022/04/26 MySQL