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 相关文章推荐
在Linux上安装Python的Flask框架和创建第一个app实例的教程
Mar 30 Python
python简单实现获取当前时间
Aug 27 Python
详解Python进阶之切片的误区与高级用法
Dec 24 Python
pyinstaller打包多个py文件和去除cmd黑框的方法
Jun 21 Python
使用Python中的reduce()函数求积的实例
Jun 28 Python
python django model联合主键的例子
Aug 06 Python
Python爬虫爬取Bilibili弹幕过程解析
Oct 10 Python
使用wxpy实现自动发送微信消息功能
Feb 28 Python
Python3 hashlib密码散列算法原理详解
Mar 30 Python
python实现五子棋程序
Apr 24 Python
python解包用法详解
Feb 17 Python
Python实战实现爬取天气数据并完成可视化分析详解
Jun 16 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加密解密的代码
2007/07/16 PHP
php使用ZipArchive函数实现文件的压缩与解压缩
2015/10/27 PHP
使用PHPMailer发送邮件实例
2017/02/15 PHP
从ThinkPHP3.2.3过渡到ThinkPHP5.0学习笔记图文详解
2019/04/03 PHP
laravel框架中间件简单使用方法示例
2020/01/25 PHP
限制复选框的最大可选数
2006/07/01 Javascript
javascript Onunload与Onbeforeunload使用小结
2009/12/31 Javascript
JavaScript插件化开发教程 (三)
2015/01/27 Javascript
js实现精美的图片跟随鼠标效果实例
2015/05/16 Javascript
BootStrap 获得轮播中的索引和当前活动的焦点对象
2017/05/11 Javascript
JavaScript输入框字数实时统计更新
2017/06/17 Javascript
JS解析后台返回的JSON格式数据实例
2018/08/06 Javascript
Angular7中创建组件/自定义指令/管道的方法实例详解
2019/04/02 Javascript
JavaScript实现简单的弹窗效果
2020/05/19 Javascript
[01:48]帕吉至宝加入游戏,遗迹战场现“千劫神屠”
2018/04/07 DOTA
[03:42]2018完美盛典-《加冕》
2018/12/16 DOTA
Python设计模式之单例模式实例
2014/04/26 Python
探索Python3.4中新引入的asyncio模块
2015/04/08 Python
用实例解释Python中的继承和多态的概念
2015/04/27 Python
Python3控制路由器——使用requests重启极路由.py
2016/05/11 Python
Python如何快速实现分布式任务
2017/07/06 Python
对Python中画图时候的线类型详解
2019/07/07 Python
python脚本实现音频m4a格式转成MP3格式的实例代码
2019/10/09 Python
Pytorch 数据加载与数据预处理方式
2019/12/31 Python
使用 Python 遍历目录树的方法
2020/02/29 Python
Python并发请求下限制QPS(每秒查询率)的实现代码
2020/06/05 Python
Scrapy-Redis之RedisSpider与RedisCrawlSpider详解
2020/11/18 Python
Django-celery-beat动态添加周期性任务实现过程解析
2020/11/26 Python
Adobe Html5 Extension开发初体验图文教程
2017/11/14 HTML / CSS
《自然之道》教学反思
2014/02/11 职场文书
离婚协议书怎么写
2014/09/12 职场文书
缓刑期间思想汇报范文
2014/10/10 职场文书
2015年度物业公司工作总结
2015/04/27 职场文书
2019经典广告词集锦!
2019/07/02 职场文书
导游词之寿县报恩寺
2020/01/19 职场文书
Windows下用Nginx配置https服务器及反向代理的问题
2021/09/25 Servers