BP神经网络预测的matlab代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
BP神经网络预测的matlab代码附录5:
BP神经网络预测的matlab代码: P=[ 0
0.1386
0.2197
0.2773
0.3219
0.3584
0.3892
0.4159
0.4394
0.4605
0.4796
0.4970
0.5278
0.5545
0.5991
0.6089
0.6182
0.6271
0.6356
0.6438
0.6516
0.6592
0.6664
0.6735
0.7222
0.7275
0.7327
0.7378
0.7427
0.7475
0.7522
0.7568
0.7613
0.7657
0.7700]
T=[0.4455 0.323 0.4116 0.3255 0.4486 0.2999 0.4926 0.2249 0.4893
0.2357 0.4866 0.2249
0.4819 0.2217 0.4997 0.2269 0.5027 0.217 0.5155 0.1918 0.5058 0.2395 0.4541 0.2408 0.4054 0.2701 0.3942 0.3316 0.2197 0.2963 0.5576 0.1061 0.4956 0.267 0.5126 0.2238 0.5314 0.2083 0.5191 0.208 0.5133 0.1848
0.5089 0.242 0.4812 0.2129 0.4927 0.287 0.4832 0.2742 0.5969 0.2403
0.5056 0.2173 0.5364 0.1994 0.5278 0.2015 0.5164 0.2239 0.4489 0.2404 0.4869 0.2963 0.4898 0.1987 0.5075 0.2917 0.4943 0.2902 ]
threshold=[0 1]
net=newff(threshold,[11,2],{'tansig','logsig'},'trainlm');
net.trainParam.epochs=6000
net.trainParam.goal=0.01
LP.lr=0.1;
net=train(net,P',T')
P_test=[ 0.7742
0.7784
0.7824
0.7864
0.7902
0.7941 ] out=sim(net,P_test')
友情提示:以上面0.7742为例0.7742=ln(47+1)/5
因为网络输入有一个元素,对应的是测试时间,所以P只有一列,
Pi=log(t+1)/10,这样做的目的是使得这些数据的范围处在[0 1]区间之内,但是事实上对于logsin命令而言输入参数是正负区间的任意值,而将输出值限定于0到1之间。可能只有当输入值在0到1之间,输出的函数才可以通过返归依化得到正确的对应的答案,因此在后面有threshold来限制输入值的区间
n=-5:0.1:5;
a=logsig(n);
plot(n,logsig(n))
图像如右图所示
T是指CD4Count*0.02,与HIV分别对应的值,是输出值,有两组数据, T的第一列数据= 表格当中(CD4Count*0.02)?0.02,再取对数,再?10 T的第一列数据= 表格当中(HIV)的对数,再?5
这样就完成了最开始的数据导入工作,即为了训练神经而进行的输入与输出。
threshold=[0 1]---------
变量threshold用于规定输入向量的最大值和最小值,最大值为1,最小值为0
net=newff(threshold,[11,2],{'tansig','logsig'},'trainlm');
网络中间层神经元函数采用S型正切函数tansig,设定网络的训练函数为trainlm,它采用Levenberg-Marquardt算法进行网络学习。
输出层神经元函数采用S型对数函数logsig
net.trainParam.epochs=6000
net.trainParam.goal=0.01
LP.lr=0.1;
经多次尝试,当模型的训练次数取6000,训练目标为0.01,学习速率为0.1,中间神经元个数取11时误差最小(下图为训练误差曲线)
怎样看数据的误差,难道只能通过看图像的方法,. 参考资料