matlab模拟出现较大误差是什么原因,求助大神,使用BP神经网络预测数据,为什么误差很大?...

随机产生了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');

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值