传统BP做100次循环。每次输入96组数据 其中3个输入1个输出,不用验证 就这样做100次 这样来训练神经网络
请问怎么修改
%% 清空环境变量
clc
clear
% 读取数据
data=load("DataAfterCl2.mat"); %%读取EXCEL数据
%前n-1列为输入数据,最后一列为输出数据
%input=data(:,1:end-1);
%output=data(:,end);
input=data.inputdata; %第1列至倒数第2列为输入
output=data.outputdata; %最后1列为输出
N=length(output); %样本总数
testNum=100; %测试集数据个数
trainNum=N-testNum; %训练集数据个数
% 划分训练集、测试集
input_train = input(1:trainNum,:)';
output_train = output(1:trainNum)';
input_test = input(trainNum+1:trainNum+testNum,:)';
output_test = output(trainNum+1:trainNum+testNum)';
% 归一化
%把所有的数据都转换为(0,1)之间的数,目的就是取消数据间的数量别差别,防止大数吃小数的现象;inputn是归一化得到的数据
[inputn,inputps]=mapminmax(input_train,0,1);
[outputn,outputps]=mapminmax(output_train);
inputn_test=mapminmax('apply',input_test,inputps);
%% BP网络
transform_func={'tansig','purelin'}; %传递函数
train_func='trainlm'; %训练算法
net=newff(inputn,outputn,11,transform_func,train_func);
% 网络参数
net.trainParam.epochs=1000; % 训练次数
net.trainParam.lr=0.01; % 学习速率
net.trainParam.goal=0.000001; % 训练目标最小误差
% 训练模型
net=train(net,inputn,outputn);
% 测试模型
an=sim(net,inputn_test); %用训练好的模型进行仿真
test_simu=mapminmax('reverse',an,outputps); % 预测结果反归一化
[mae,rmse,mape,error]=calc_error(test_simu,output_test);% 性能指标计算
% 误差比较
figure
plot(output_test,'b','linewidth',2)
hold on
plot(test_simu,'r','linewidth',2)
legend('真实值','预测值')
xlabel('Samples')
ylabel('Values')
title('BPNN预测值和真实值的对比图')
figure
bar(error)
xlabel('Samples')
ylabel('Values')
title('BPNN预测误差图')