clc
clear
close all
warning off
nntwarn off
%% 导入数据
input=xlsread('T_input.xlsx','Sheet1','A1:ING5');
outputdata=xlsread('T_output.xlsx','Sheet1','A1:ING6');
cn=size(input,2); %计算矩阵列数 cn为input列数
rn=randperm(cn); %产生随机数
numz =cell(5,2);%用于存储五折交叉数据集
n0 = [0:cn/5:cn];%分成五分
%划分五折交叉数据集
for ii = 1:5
numx1= input;
numx1(:,rn(n0(ii)+1:n0(ii+1))) = [];
input1 = [numx1 input(:,rn(n0(ii)+1:n0(ii+1)))];
numz{ii,1} = input1;
numy1 =outputdata;
numy1(:,rn(n0(ii)+1:n0(ii+1))) = [];
output1 = [numy1 outputdata(:,rn(n0(ii)+1:n0(ii+1)))];
numz{ii,2} = output1;
end
numc = cell(5,2);%存储测试结果
rnum = zeros(5,1);%存储五折交叉评价结果
m=5165;
nump = [];%存储所有评价参数
for ii =1:5%交叉训练测试
% 训练数据
input=numz{ii,1};
outputdata =numz{ii,2};
day=input(1:5,(1:m));
output=outputdata(1:6,(1:m));
[dayn,dayps]=mapminmax(day);
[outputn,outputps]=mapminmax(output);
clear net
rng(1)
net=newff(dayn,outputn,[30,30],{'tansig','tansig','tansig'});
net.trainParam.show=20;
net.trainParam.epochs=1000;
net.trainParam.goal=1.0e-4;
net.trainParam.lr=0.3;
[net,tr]=train(net,dayn,outputn);
k=input(1:5,(m+1:6455));
kn=mapminmax('apply',k,dayps);
s_bp=sim(net,kn);
s_output=mapminmax('reverse',s_bp,outputps);
numc{ii,1} = s_output;
numc{ii,2} = outputdata ;
R2=0;
for jj = 1:6
R2 = R2+R_2(outputdata(jj,m+1:end),s_output(jj,:))/6;
[MSE, RMSE, MBE, MAE,MAPE ] =MSE_RMSE_MBE_MAE(outputdata(jj,m+1:end),s_output(jj,:));
rnum(ii,1:4) = rnum(ii,1)+ [MAE MSE RMSE MAPE]/6;
nump = [nump ;[ MAE MSE RMSE MAPE R_2(outputdata(jj,m+1:end),s_output(jj,:)) ]];
end
rnum(ii,5) = R2/6;
end
rnum = [rnum;mean(rnum)];%保存均值
figure
plot(rnum(:,5),'k-*')
ylabel('R^{2}');
xlabel('五折交叉')
title('SVM')
set(gca,'XTick',1:6)
set(gca,'XTickLabel',{'1','2','3','4','5','均值'})
%% validation
%RV1
%test
input_t=input(1:5,m+1:6455);
input_tn=mapminmax('apply',input_t,dayps);
s_t=sim(net,input_tn);
s_t_output=mapminmax('reverse',s_t,outputps);
%输出1
target_t1=outputdata(1,(m+1:6455));
figure
x=1:1290;
plot(x,s_t_output(1,:),'-r',x,target_t1,'-b');
AE1=s_t_output(1,:)-target_t1;
errorsum1=sum(abs(AE1))
%输出2
target_t2=outputdata(2,(m+1:6455));
figure
x=1:1290;
plot(x,s_t_output(2,:),'-r',x,target_t2,'-b');
AE2=s_t_output(2,:)-target_t2;
errorsum2=sum(abs(AE2))
%输出3
target_t3=outputdata(3,(m+1:6455));
figure
x=1:1290;
plot(x,s_t_output(3,:),'-r',x,target_t3,'-b');
AE3=s_t_output(3,:)-target_t3;
errorsum3=sum(abs(AE3))
%输出4
target_t4=outputdata(4,(m+1:6455));
figure
x=1:1290;
plot(x,s_t_output(4,:),'-r',x,target_t4,'-b');
AE4=s_t_output(4,:)-target_t4;
errorsum4=sum(abs(AE4))
%输出5
target_t5=outputdata(5,(m+1:6455));
figure
x=1:1290;
plot(x,s_t_output(5,:),'-r',x,target_t5,'-b');
AE5=s_t_output(5,:)-target_t5;
errorsum5=sum(abs(AE5))
%输出6
target_t6=outputdata(6,(m+1:6455));
figure
x=1:1290;
plot(x,s_t_output(6,:),'-r',x,target_t6,'-b');
AE6=s_t_output(6,:)-target_t6;
errorsum6=sum(abs(AE6))
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
基于MATLAB编程,K折交叉验证BP神经网络,多输入多输出BP神经网络,代码完整,包含数据,有注释,方便扩展应用 1,如有疑问,不会运行,可以私信, 2,需要创新,或者修改可以扫描二维码联系博主, 3,本科及本科以上可以下载应用或者扩展, 4,内容不完全匹配要求或需求,可以联系博主扩展。
资源推荐
资源详情
资源评论
收起资源包目录
bp.rar (5个子文件)
MSE_RMSE_MBE_MAE.m 439B
main1.m 3KB
R_2.m 315B
T_output.xlsx 386KB
T_input.xlsx 109KB
共 5 条
- 1
资源评论
神经网络机器学习智能算法画图绘图
- 粉丝: 2471
- 资源: 603
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功