运行BP神经网络预测误差大

针对一个包含66组数据和17个输入特征的数据集,使用MATLAB进行BP神经网络训练,但预测误差较大。本文提供了详细的MATLAB代码,并寻求减少预测误差的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载自

数据为66个,17个指标输入,1个输出。

数据长短不一,最小的个位数,最大的9位数。运行下列代码后误差非常大,求大神们给减小误差的指导方向。
matlab代码如下:
clc
clear

%load data1 input output
load matlab3 input output
P=input(1:60,:)';
T=output(1:60,:)';
input_test=input(1:60,:)';
output_test=output(1:60,:)';

%训练数据归一化
[inputn,inputs]=mapminmax(P);
[outputn,outputs]=mapminmax(T);


%  创建一个新的前向神经网络 
net=newff(minmax(P),[17,1],{'tansig','purelin'},'trainbr');
%  当前输入层权值和阈值 
inputWeights=net.IW{1,1}; 
inputbias=net.b{1}; 
%  当前网络层权值和阈值 
layerWeights=net.LW{2,1}; 
layerbias=net.b{2}; 
%  设置训练参数 
net.trainParam.show = 100; 
net.trainParam.lr = 0.1; 
net.trainParam.mc = 0.9; 
net.trainParam.epochs = 6000; 
net.trainParam.goal = 1e-3; 
%  调用 TRAINGDM 算法训练 BP 网络 
[net,tr]=train(net,P,T); 

%BP神经网络的预测
%预测数据归一化
%inputn_test=mapminmax('apply',input_test,inputs);
%BP神经网络预测输出
an=sim(net,P);
%输出结果反归一化
BPoutput=mapminmax('reverse',an,outputs);
%输出训练后的权值和阈值
iw1=net.iw(1);
b1=net.b(1);
iw2=net.lw(2);
ba=net.b(2);

%画图
%网络预测结果图形
figure(1)
plot(BPoutput,':og')
hold on
plot(output_test,'-*')
legend('预测输出','期望输出')
title('BP神经网络预测输出')
ylabel('输出')
xlabel('样本')
%网络预测误差图形
error=output_test-BPoutput;
figure(2)
plot(error,'-*')
title('BP神经网络预测误差')
ylabel('误差 error')
xlabel('样本')
%}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值