最近在写毕业论文,用的matlab7.0软件,模型是bp神经网络预测辽宁十二五期间能源消费量,3个输入,1个隐含层含5个神经元,1个输出,我想先用1978-2007年的数据做训练集,2008-2010年的数据做检验。以下是我的程序代码:
clc;clear all;
p =xlsread('D:\matlab\work\renkou', 'sheet2', 'J2:L31'); %这是1978-2007年的输入数据
t = xlsread('D:\matlab\work\renkou', 'sheet2', 'B2:B31');%这是1978-2007年的输出数据
p = p'; t = t';
%利用premnmx函数对数据进行归一化
[pn,minp,maxp,tn,mint,maxt]=premnmx(p,t); % 对于输入矩阵p和输出矩阵t进行归一化处理
dx=[-1,1]; %归一化处理后最小值为-1,最大值为1
%BP网络训练
net=newff(minmax(pn),[5,1],{'tansig','tansig','purelin'},'trainlm');
nParam.show=50; %50次显示一次结果
net.trainParam.Lr=0.05; %学习速度为0.05
net.trainParam.epochs=1000; %最大训练1000次
net.trainParam.goal=0.0001; %均方误差
[net,tr]=train(net,pn,tn); %开始训练,其中pn,tn分别为输入输出样本
%利用原始数据对BP网络仿真
an=sim(net,pn); %用训练好的模型进行仿真
a=postmnmx(an,mint,maxt); % 把仿真得到的数据还原为原始的数量级;
p_test= xlsread('D:\matlab\work\renkou', 'sheet2', 'J32:L34'); %这是2008-2010年的数据,检验数据
p_test = p_test'
pn_test=tramnmx(p_test,minp,maxp);
%% Simulation
tn_test=sim(net,pn_test);
%% Normalization-Inverse
t_test=postmnmx(tn_test,mint,maxt)
可是预测出来2008-2010年的数据不对,这是不是因为mint和maxt的关系啊?预测出来的数据不能超过maxt?请各位大侠帮帮忙,最近初学神经网络,不知道该怎么处理这个问题。感激不尽