随机产生了25组数据,利用公式求得结果矩阵,现用20组数据训练BP网络,剩下的5组进行预测,产生的结果误差为什么很大,请大神指教,不甚感激
由于金币只有1.5个,所以没办法发求助帖
%测试BP神经网络
clear;
clc;
close all;
x = rand(25,4);
%%
%产生原始数据
indata = rand(25,4);
outdata = indata(:,1)*2+3*indata(:,2).^2 + indata(:,3) + indata(:,4)*0.25;
%设置训练数据
train_indata_innormal = indata(1:20,: )';
train_outdata_innormal = outdata(1:20,: )';
%设置测试数据
test_indata_innormal = indata(21:25,: )';
test_outdata_innormal = outdata(21:25)';
%训练数据归一化
[train_indata_normal,train_inpar] = mapminmax(train_indata_innormal);
[train_outdata_normal,train_outpar] = mapminmax(train_outdata_innormal);
%测试数据归一化
test_indata_normal = mapminmax('apply',test_indata_innormal,train_inpar);
%%
%BP神经网络
%创建网络训练函数
% for i=1:5000
net = newff(train_indata_normal,train_outdata_normal,[6 1],{ 'logsig' 'purelin' } , 'traingda');
%设置训练参数
net.trainparam.goal = 1e-5;
net.trainparam.epochs = 50000;
net.trainparam.min_grad = 1e-6;
%取消validation check功能
net.divideFcn = '';
[net,tr] = train(net,train_indata_normal,train_outdata_normal);
out_train = sim(net,train_indata_normal);
%计算训练误差
train_error = train_outdata_normal - out_train;
error_MSE = mse(train_error);
figure(1)
plot(train_outdata_normal,'-r');
hold on
plot(out_train,':g');
%仿真
out = sim(net,test_indata_normal);
%测试数据反归一化
test_outdata = mapminmax('reverse',out,train_outpar);
test_error = test_outdata - test_outdata_innormal;
figure(3)
plot(test_outdata,'-r');
hold on
plot(test_outdata_innormal,':g');