小波BP神经网络分析农业应用实例及matlab 小波toolbox操作

[转载]BP神经网络matlab实现的基本步骤
1、数据归一化
2、数据分类,主要包括打乱数据顺序,抽取正常训练用数据、变量数据、测试数据
3、建立神经网络,包括设置多少层网络(一般3层以内既可以,每层的节点数(具体节点数,尚无科学的模型和公式方法确定,可采用试凑法,但输出层的节点数应和需要输出的量个数相等),设置隐含层的传输函数等。关于网络具体建立使用方法,在后几节的例子中将会说到。
4、指定训练参数进行训练,这步非常重要,在例子中,将详细进行说明
5、完成训练后,就可以调用训练结果,输入测试数据,进行测试
6、数据进行反归一化
7、误差分析、结果预测或分类,作图等
数据归一化问题
归一化的意义:
首先说一下,在工程应用领域中,应用BP网络的好坏最关键的仍然是输入特征选择和训练样本集的准备,若样本集代表性差、矛盾样本多、数据归一化存在问题,那么,使用多复杂的综合算法、多精致的网络结构,建立起来的模型预测效果不会多好。若想取得实际有价值的应用效果,从最基础的数据整理工作做起吧,会少走弯路的。
归一化是为了加快训练网络的收敛性,具体做法是:
1 把数变为(0,1)之间的小数
主要是为了数据处理方便提出来的,把数据映射到0~1范围之内处理,更加便捷快速,应该归到数字信号处理范畴之内。
2 把有量纲表达式变为无量纲表达式
归一化是一种简化计算的方式,即将有量纲的表达式,经过变换,化为无量纲的表达式,成为纯量
比如,复数阻抗可以归一化书写:Z = R + jωL = R(1 + jωL/R)
,复数部分变成了纯数量了,没有量纲。另外,微波之中也就是电路分析、信号系统、电磁波传输等,有很多运算都可以如此处理,既保证了运算的便捷,又能凸现出物理量的本质含义。
神经网络归一化方法:
由于采集的各数据单位不一致,因而须对数据进行[-1,1]归一化处理,归一化方法主要有如下几种,供大家参考:
1、线性函数转换,表达式如下:
复制内容到剪贴板
y=(x-MinValue)/(MaxValue-MinValue)
说明:x、y分别为转换前、后的值,MaxValue、MinValue分别为样本的最大值和最小值。
2、对数函数转换,表达式如下:
复制内容到剪贴板
y=log10(x)
说明:以10为底的对数函数转换。
3、反余切函数转换,表达式如下:
复制内容到剪贴板
y=atan(x)*2/PI
matlab中归一化的实现:
matlab中的归一化处理有五种方法,只会其中一种就可以了,我喜欢用第4种,因为习惯和方便
注意:第一组和第二组归一化函数在Matlab7.0以上已遗弃,他们的用法相似,pre**是归一化,post**是反归一化,tram**是使用同样的设置归一化另外一组数据
1. 内部函数premnmx、postmnmx、tramnmx,将数据归一化到(-1,1)
premnmx的语法格式是
复制内容到剪贴板
[Pn,minp,maxp,Tn,mint,maxt]=premnmx(P,T)
其中P,T分别为原始输入和输出数据,minp和maxp分别为P中的最小值和最大值。mint和maxt分别为T的最小值和最大值。
我们在训练网络时,如果所用的是经过归一化的样本数据,那么以后使用网络时所用的新数据也应该和样本数据接受相同的预处理,这就要用到tramnmx,换句话说使用同一个归一化设置(setting)归一化另外一组数据。如下所示:
复制内容到剪贴板
[Pn]=tramnmx(P,minp,maxp)
其中P和Pn分别为变换前、后的输入数据,maxp和minp分别为premnmx函返回的最大值maxp和最小值minp。
2、prestd、poststd、trastd归化数据到(0,1)
用法与1差不多。详细可以help prestd。
上述两种方法是可以相互转化的,比如,第一种归化后的数据为p,则(1+p)./2的结果就是第二种了
3、mapminmax()将数据归一化到(-1,1),是6.5中**mnmx系列的替换函数
该函数同时可以执行归一化、反归一化和归一化其他数据的功能,具体看帮助和后面的实例
复制内容到剪贴板
% 归一化数据输入为p,输出为t
[normInput,ps] = mapminmax(p);
[normTarget,ts] = mapminmax(t);
% 反归一化
trainOutput = mapminmax('reverse',normTrainOutput,ts);
trainInsect = mapminmax('reverse',trainSamples.T,ts);
validateOutput = mapminmax('reverse',normValidateOutput,ts);
validateInsect = mapminmax('reverse',validateSamples.T,ts);
testOutput = mapminmax('reverse',normTestOutput,ts);
testInsect = mapminmax('reverse',testSamples.T,ts);
x1 = [1 2 4; 1 1 1; 3 2 2; 0 0 0]
[y1,PS] = mapminmax(x1,0,1)% 归化到 [0,1],若不填,则默认为[-1,1]
x1_again = mapminmax('reverse',y1,PS)
4、mapstd()将数据归一化到(0,1),是6.5中**std系列的替代函数
同理,3和4两种方法是可以相互转化的,比如,第一种归化后的数据为p,则(1+p)./2的结果就是第二种了。
5、自己写归一化函数,这个网上很多,大家可以百度下
输入训练数据的乱序排法,以及分类
注意:dividevec()函数在7.6版本还可以使用
把数据重新打乱顺序,进行输入,可以让数据更加具备典型性和更优良的泛化能力!
把数据进行打乱,并分类为:训练输入数据、变量数据、测试数据的方法
用百度搜了一下,发现有些方法,但居然很少看到使用matlab内部函数直接进行的,其实matlab自带的内部函数dividevec,完全能胜任上述工作,推荐!
但这个存在一个问题是,因为打乱了,最后分析结果的时候,数据重新排列困难,因为丢失了数据在数组中的位置参数。具体用法可以参见下面bp交通预测的例子。
mathworksnnet的新手册里面似乎没有介绍dividverc这个函数了,但增加了新的函数来完成上述功能,并返回标号(手头没装新版本Neural
Network Toolbox&& Version
(R2008a)),看guide大概是这个意思(有新版本的,可以试一下,这个函数是不是这个意思):
divideblock,divideind,divideint和dividerand
上述函数,用法和功能基本相同,只是打乱的方法不一样,分别是block方法抽取、按数组标号自定义抽取、交错索引抽取和随机抽。
下面以divideblock为例,讲解其基本用法:
复制内容到剪贴板
[trainV,valV,testV,trainInd,valInd,testInd]
=divideblock(allV,trainRatio,valRatio,testRatio)
[训练数据,变量数据,测试数据,训练数据矩阵的标号,,变量数据标号,测试数据标号]
=divideblock(所有数据,训练数据百分比,变量数据百分比,测试数据百分比)
其实dividevec和后面四个分类函数的区别在于,dividevec一般直接在Matlab代码中调用。
而后面四个函数是通过设置网络的divideFcn函数来实现,比如,net.divideFcn='divideblock',但不是说不可以在代码中像dividevec直接调用
如何查看和保存结果
训练好的权值、阈值的输出方法是:
输入到隐层权值:
复制内容到剪贴板
w1=net.iw{1,1}
隐层阈值:
复制内容到剪贴板
theta1=net.b{1}
隐层到输出层权值:
复制内容到剪贴板
w2=net.lw{2,1};
输出层阈值:
复制内容到剪贴板
theta2=net.b{2}
训练好的BP神经网络保存:
复制内容到剪贴板
save file_name net_name%Matlab自动将网络保存为mat数据文件,下次使用时可以直接载入
load file_name
每次结果不一样问题
因为每次初始化网络时都是随机的,而且训练终止时的误差也不完全相同,结果训练后的权植和阀也不完全相同(大致是一样的),所以每次训练后的结果也略有不同。
找到比较好的结果后,用命令save filen_ame net_name保存网络,可使预测的结果不会变化,在需要的调用时用命令load
filename载入。
关于如何找到比较好的结果,进行保存,可以设置误差,在循环中保存,具体使用可以参看bp交通预测优化后的例子
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。上传用户:awslytmata资料价格:5财富值&&『』文档下载 :『』&&『』所属分类:机构:新疆兵团环境保护科学研究所基金:新疆兵团科技攻关资助项目(编号:2008GG31,项目名称:兵团污染减排决策支持系统开发研究)分类号:TB49,TP183文献出处:关 键 词 :&&&&权力声明:若本站收录的文献无意侵犯了您的著作版权,请点击。摘要:BP网络模型的实现需要掌握计算机编程语言及较高的编程能力,这在一定程度上不利于神经网络技术的推广和使用,而MATLAB软件提供了一个现成的神经网络工具箱(Neural Network Toolbox,简称NNT)。运用MATLAB的神经网络工具箱(NNT),结合清洁生产技术特点,建立了清洁生产审核企业清洁生产等级自动确定的BP网络模型,讨论了基于MATLAB的BP网络应用于清洁生产审核的可行性和使用价值。Abstract:The realization of BP network model needs to master computer programming language and the ability to program, which is not conducive to the promotion and use of neural network technology to a certain extent, and MATLAB software provides a ready-made Network Toolbox Neural (NNT). Using MATLAB neural network toolbox (NNT), combined with the characteristics of cleaner production technology, the BP network model is established for cleaner production audit. The feasibility and use value of MATLAB network based on BP is discussed.正文快照:1引言1.1 BP神经网络人工神经网络是一种非线性动力学系统,具有良好的自适应性、自组织性及很强的学习、联想、容错、抗干扰能力,可以灵活方便地对多成因的复杂未知系数进行高度建模,实现高度的非线性映射关系。因此,用于清洁生产评价可望建立接近于人类思维模式的定量与定性分享到:相关文献|扫一扫下载手机客户端
扫描我,关注团购信息,享更多优惠
||网络安全
| | | | | | | | | | | | | | | |
||电子电工
汽车交通| | | | | | | | | |
||投资理财
| | | | | | | | | | | | | | | | |
| | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
||外语考试
| | | | | | | | |
| 视频教程|
MATLAB神经网络30例
定价:¥59.80
校园优惠价:¥46.64 (78折)
促销活动:
商品已成功飞到您的手机啦!快登录手机站看看吧!
下载客户端
> 微信关注“互动出版网”,便捷查询订单,更多惊喜天天有
ISBN:4上架时间:出版日期:2014 年7月开本:16开页码:344版次:1-1
所属分类:
  本书可作为本科毕业设计、研究生论文写作、博士生参考书籍之用,同时对广大一线科研人员也有很高的参考价值。
神经网络经过了近70年的蓬勃发展,其拓扑结构、工作机制与应用领域已经发生了翻天覆地的变化,全面、直观、深入地认识各类神经网络已经是学习运用神经网络的必由之路。本书全面介绍了前馈型、反馈型与自组织型三大类神经网络,传统的BP网络到现代的量子网络20余小类神经网络,并结合实例分析了各种神经网络的使用方法和编程方法。
对于成熟的神经网络,本书给出了MATLAB函数及调用方法;对于前沿的神经网络,本书推导了高效简洁的编程算法;对于需要结合其他方法使用的神经网络,本书也分析了其他方法的原理、使用方法及MATLAB函数,甚至提供了相应的工具箱供读者调用。
本书充分考虑了MATLAB语言的特点,以及程序的可读性、可移植性、可扩展性的要求,力图保证研究者能深入浅出地理解如何使复杂的算法简洁高效,然后变成简洁、易读、高效的源代码;力求使初学者与使用者通过直观生动的实例来理解各类神经网络,无须重新编写程序,直接修改参数即可使用本书提供的神经网络。
国防科技大学博士后,安徽安庆人,主要研究方向为智能算法应用(神经网络/遗传算法/混沌/分形/小波)、有限元仿真、材料工艺及合金腐蚀研究等。
BP神经网络在非线性函数拟合中的应用 1
理论基础 1
BP网络概述 1
BP神经网络的MATLAB函数 2
非线性函数拟合方法 6
主元BP神经网络在股票价格预测中的应用 12
理论基础 12
主成分分析的原理 12
主元神经网络与股票预测 14
股票价格的预测方法 16
遗传算法优化BP神经网络在坝基岩体渗透系数识别中的应用 22
理论基础 22
遗传算法概述 22
MATLAB遗传算法工具箱介绍 24
遗传神经网络的基本原理 28
坝基岩体渗透系数识别 29
基于PSO-BP神经网络刀具磨损状态监测技术 35
理论基础 35
粒子群算法的原理 36
粒子群算法的矩阵形式 37
  自1943年神经生物学家Me Culloch和青年数学家Pitts合作提出第一个人工神经元模型以来,神经网络经历了近70年的蓬勃发展,其类型之丰富、应用之广泛、影响之深远恐怕是初创者始料未及的。然而,从目前的文献资料来看,神经网络的效能远远未能实现最大化,人们对于各种神经网络的认识与应用也很不充分。因此,本书试图从两个方面来解决这一问题。
  第一,尽可能全面、生动、形象地介绍各类神经网络。总体上来讲,神经网络分为三类,即前馈型、反馈型与自组织型。前馈型网络主要应用于拟合问题;反馈型网络主要应用于优化问题;自组织型网络主要应用于分类问题。但实际情况往往千差万别,如何根据实际情况使用神经网络需要进行深入研究,本书根据不同神经网络的特点,分析了各种具体实例下神经网络的使用方法,以达到抛砖引玉的效果。
  第二,尽可能详细、严谨、直观地给出各种实例下神经网络的算法、源代码、Simulink方法与GUI方法。高效简洁的程序必须依赖高效简洁的算法。因此,本书一方面详细介绍常用神经网络的MATLAB函数,减少不必要的编程与公式推导;另一方面,重点推导了一些新型网络的MATLAB编程算法,最大限度地保证了程序的高效性、可读性、可移植性与可扩展性,读者再遇到相似问题时,只需修改程序中的若干参数即可,而无须再更改程序本身,省去了编程之苦。
  基于以上两个方面,本书在介绍各类神经网络的基本原理、使用方法与MATLAB函数的同时,结合严谨的算法推导与通俗易懂的实例编程应用来说明各类神经网络解决问题的实际表现与编程技巧。各实例的内容简介如下。
  实例1:主要介绍BP神经网络的基本原理、MATLAB函数,然后比较了BP神经网络拟合、多项式拟合与非线性拟合的基本理论、编程方法与实际表现。
  实例2:由于高维输入容易造成“维数灾难”,该实例主要介绍通过主成分分析的方法实现神经网络的降维,减少计算规模,并利用该方法实现了对股票价格的预测。
  实例3与实例4:由于BP神经网络常常存在多个局部极小值点,而常规的梯度下降法容易陷于这些区域“不能自拔”。因此,实例3与实例4分别利用遗传算法与粒子群算法具有全局寻优与跳出局部极值的能力,实现了BP神经网络权值学习的最优化,并列举了相应的实例作为旁证。
  实例5:主要介绍了离散型Hopfield神经网络的工作原理、MATLAB函数、设计方法,利用该网络具有渐进稳定点的特点实现对交通标志的识别。
  实例6:介绍了连续型号Hopfield神经网络的工作原理,重点推导了设计CHNN网络的方法、解决TSP问题的编程算法,并利用设计的CHNN网络与算法实现了旅游路线周线的规划。
  实例7:主要介绍了感知器网络与线性网络的基本原理与MATLAB函数,并列举了相应的实例。
  实例8:主要介绍了RBF神经网络的基本原理与MATLAB函数,根据太阳黑子预报的问题,比较了经典的ARMA预报方法、RBF网络与BP网络三者的实际表现。
  实例9:介绍了GRNN网络的基本原理与统计学意义,特别介绍了UKF滤波方法,然后根据无源双地基雷达对飞机跟踪的问题比较了GRNN网络与UKF滤波方法的实际表现。
  实例10:介绍了模糊逻辑理论、TS型模糊神经网络,重点推导了模糊神经网络的学习算法,并利用该网络实现了地基沉降量的预测。
  实例11:主要介绍了概率神经网络的基本原理与MATLAB函数,并利用该网络将遥感图像按颜色分为了3类,效果显著。
  实例12:介绍了小波理论与小波神经网络理论,重点推导了小波网络的学习算法,并利用该算法实现了电力负荷的预测。
  实例13:由于神经网络PID控制是神经网络的重要应用,该实例介绍了PID控制的基本理论,并利用Hebb规则PID的自适应控制。
  实例14:主要介绍了灰色理论与灰色神经网络的基本原理,重点推导了灰色网络的学习算法,并利用该网络实现了空调订单的预报。
  实例15:主要介绍了混沌理论与Chebyshev神经网络的基本原理,重点推导了Chebyshev网络的学习算法,并利用该算法实现了字符串的异步加密,实现效果良好。
  实例16:主要介绍了随机Hopfield神经网络检测器、CDMA通信模型与多用户检测器问题,然后利用随机Hopfield神经网络实现了最优CDMA多用户检测。
  实例17:主要介绍了ELMAN神经网络的基本原理、MATLAB函数与RSSI无线定位技术,并运用ELMAN神经网络与RSSI技术初步实现了无线传感器的定位。
系列图书推荐 ¥88.00¥72.16
同类热销商品¥35.00¥24.50
订单处理配送
北京奥维博世图书发行有限公司 china-pub,All Rights Reserved403 Forbidden
403 Forbidden

我要回帖

更多关于 matlab 小波 的文章

 

随机推荐