数模小白关于BP的一些问题
%PA 6月6:0:0 计算的MATLAB 程序如下:BP神经网络预测%6月6位于第28行
clc,clear
load ('data.mat')%原始数据以列向量的方式存放在workplace文件中
PA=PA(2:29,:);
%数据的标准化
N=size(PA);
for j=1:N(1,2)
PAHminmax=minmax(PA(:,j)');
for i=1:N(1,1)
PA(i,j)=(PA(i,j)-PAHminmax(1,1))/(PAHminmax(1,2)-PAHminmax(1,1));
end
end
%以每天的从0时计数起,每隔十五分钟作为输入
P=PA(7:27,:);
%以6月6的间隔十五分钟的发电量作为目标向量
T=PA(28,:);
%创建一个BP神经网络,每一个输入向量的取值范围为,隐含层有22个神经元,
%输出层有一个神经元,隐含层的激活函数为tansig,输出层的激活函数为%logsig,
%训练函数为梯度下降函数,即标准学习算法
for i=1:21
a(i,1)=0;
a(i,2)=1;
end
net=newff(a,,{'tansig','logsig'},'traingd');
net.trainParam.epochs=30000;
net.trainParam.goal=0.01;
%设置学习速率为0.1
LP.lr=0.1;
%训练网络
net=train(net,P,T);
%预测6月6的发电量数据
T1=sim(net,P);%预测值
%PA.6月6日发电量真实值
T0=PA(28,:);
%预测值与实际值的误差
for i=1:N(1,2)
error(1,i)=T1(1,i)-T0(1,i);
end
%绘制误差图
figure(1)
plot(1:N(1,2),error(1,1:N(1,2)),'-*')
grid on
xlabel('时点x'),ylabel('发电功率误差y');
title('PA6.6.0.0-6.6.23.45发电功率误差图像')
%绘制实时函数图
figure(2)
plot(1:N(1,2),T0(1,:),1:N(1,2),T1(1,:),'r')
grid on
legend('实际值','预测值',2)
xlabel('时点x'),ylabel('发电功率y');
title('PA6.6.0.0-6.6.23.45发电功率实时函数图像')
web('http://www.ilovematlab.cn/forum-238-1.html','-browser')
一本书关于预测发电量的BP的程序。我稍微有点纳闷,既然你已经知道了6月6日的实际值,并且都拿相应的数据来作目标向量了,还利用神经网络来预测6月6日的发电量,意义何在?
你要明白神经网络是干嘛用的,你这个代码做出来的网络,可能是预测那些不知道实际发电量的,6月6日的数据是用来训练网络的,同时对比误差查看网络的性能
误差也有分为训练误差和测试误差的,具体你可以参考统计学习方法相关资料。
{:3_64:}{:3_64:}{:3_64:}{:3_64:}{:3_64:}
为了验证神经网络的准确度吧
页:
[1]