clc
clear
close all
[a ,ax,ay]= xlsread('a.xlsx');
num =a(:,2:5);
rand('state',0)
n = randperm(length(num));
m = 150;
input_train=num(n(1:m),1:3)';%训练数据的输入数据
output_train=num(n(1:m),4)';%训练数据的输出数据
input_test=num((m+1:end),1:3)';%测试数据的输入数据
output_test=num((m+1:end),4)'; %测试数据的输出数据
%选连样本输入输出数据归一化
[inputn,inputps]=mapminmax(input_train,0,1);%训练数据的输入数据的归一化
[outputn,outputps]=mapminmax(output_train,0,1);%训练数据的输出数据的归一化de
%% BP网络训练
% %初始化网络结构
%trainc traincgb traincgf traincgp traingda traingdx trainlm
%trainoss trainr trainrp trains trainscg
net=newff(minmax(inputn),[15,1],{'logsig','tansig'},'trainlm');
%net.trainParam.showWindow = false;%关闭训练窗口
%net.trainParam.max_fail = 9;
net.trainParam.epochs=1000;%最大迭代次数
net.trainParam.lr=0.1;%学习率
net.trainParam.goal=0.001;%学习目标
%网络训练
net=train(net,inputn,outputn);
%% BP网络预测
%预测数据归一化
inputn_test=mapminmax('apply',input_test,inputps);
outputn_test=mapminmax('apply',output_test,outputps);
%网络预测输出
an=sim(net,inputn_test);
an1=sim(net,inputn);
an(an<0) = 0;
an1(an1<0)=0;
[MSE ,RMSE, MBE ,MAE ,MAPE] =MSE_RMSE_MBE_MAE(outputn_test,an)
R2 = R_2(outputn_test,an)
%网络输出反归一化
BPoutput=(mapminmax('reverse',an,outputps));
BPoutput1=(mapminmax('reverse',an1,outputps));
%% 结果分析
figure
plot(BPoutput,'r-o')%预测的结果数据画图-代表虚线,O代表圆圈标识,r代表红色
hold on
plot(output_test,'k--*');%期望数据,即真实的数据画图,-代表实现,*就是代表*的标识,k代表黑色
legend('BP神经网络仿真值','真实值','Location','northeast')%标签
title('BP神经网络','fontsize',12)%标题 字体大小为12
xlabel('样本','fontsize',12)%X轴
set(gca,'fontsize',12)
ylabel('光伏发电功率')
figure
plot(BPoutput1,'r-o')%预测的结果数据画图-代表虚线,O代表圆圈标识,r代表红色
hold on
plot(output_train,'k--*');%期望数据,即真实的数据画图,-代表实现,*就是代表*的标识,k代表黑色
legend('BP神经网络训练拟合值','真实值','Location','southeast')%标签
title('BP神经网络','fontsize',12)%标题 字体大小为12
xlabel('样本','fontsize',12)%X轴
ylabel('光伏发电功率')
set(gca,'fontsize',12)
%预测误差
error=BPoutput-output_test;
figure
plot(error,'-*')
title('BP网络预测误差','fontsize',12)
ylabel('误差','fontsize',12)
xlabel('样本','fontsize',12)
set(gca,'fontsize',12)
figure
plot(BPoutput1,output_train,'ko')
hold on
a = polyfit(BPoutput1,output_train,1);
y = polyval(a,[min([BPoutput1 output_train]) max([BPoutput1 output_train])]);
plot([min([BPoutput1 output_train]) max([BPoutput1 output_train ])],y,'k-','LineWidth',1.5)
hold on
plot([min([BPoutput1 output_train]) max([BPoutput1 output_train]) ],[min([BPoutput1 output_train]) max([BPoutput1 output_train])],'b-','LineWidth',1.5)
hold on
xlim([min([BPoutput1 output_train]) max([BPoutput1 output_train ])])
ylim([min([BPoutput1 output_train]) max([BPoutput1 output_train ])])
xlabel('预测值')
ylabel('实际值')
legend('训练数据集','线性拟合','Y=X')
error1 = BPoutput1 - output_train;
基于BP神经网络光伏发电功率预测(代码完整,数据齐全)
版权申诉
5星 · 超过95%的资源 7 浏览量
2024-03-10
08:56:13
上传
评论 8
收藏 18KB RAR 举报
神经网络机器学习智能算法画图绘图
- 粉丝: 2418
- 资源: 588
最新资源
- 蓝zapro.apk
- chromedriver-linux64.zip
- 基于Python和PyTorch框架完成的一个手写数字识别实验源码(带MINIST手写数字数据集)+详细注释(高分项目)
- 基于Matlab在MNIST数据集上利用CNN完成手写体数字识别任务,并实现单层CNN反向传播算法+源代码+文档说明(高分项目)
- NVIDIA驱动、CUDA和Pytorch及其依赖
- html动态爱心代码一(附源码)
- c40539bc-071a-486c-9d52-9d0c18d62dac 4.html
- 基于物理的非视域成像(NLOS)算法,利用了nerf+python源码+文档说明
- yuluer知更鸟.7z(1).001
- python课程设计-基于tensorflow实现的图文生成程序,数据集flickr30k-images+源代码+文档说明+截图
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
- 1
- 2
前往页