ChildofAtlantis 发表于 2015-4-19 15:43

数模小白关于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日的发电量,意义何在?

fg8741142 发表于 2015-4-22 14:49

你要明白神经网络是干嘛用的,你这个代码做出来的网络,可能是预测那些不知道实际发电量的,6月6日的数据是用来训练网络的,同时对比误差查看网络的性能

蘑菇先生 发表于 2015-7-16 15:14

误差也有分为训练误差和测试误差的,具体你可以参考统计学习方法相关资料。

木__易 发表于 2015-8-17 08:55

{:3_64:}{:3_64:}{:3_64:}{:3_64:}{:3_64:}

杨地雷 发表于 2015-8-21 09:01

为了验证神经网络的准确度吧
页: [1]
查看完整版本: 数模小白关于BP的一些问题