BP神经网络做数据预测

问题描述:两个excel表格
已知:第一个表格,每一行21个数值,前20个参数决定最后一个数值。一共1975行数据。
预测:第二个表格,每一行20参数,50行,预测每一行的20个参数对应的输出值。
第一个表格的部分数据:在这里插入图片描述

1.用excel数据训练模型并保存

%% 清空环境变量
clc
clear
tic
%% 训练数据预测数据提取及归一化
%导入输入输出数据,数据和m文件在一个文件夹中。
data=xlsread('工作簿123.xlsx', 'Sheet1', 'A2:U1975');

%找出训练数据和预测数据,1700条训练数据,275条测试数据。
input_train=data(1:1700,1:20)';
output_train=data(1:1700,21)';
input_test=data(1701:end,1:20)';
output_test=data(1701:end,21)';

%选连样本输入输出数据归一化

[inputn,inputps]=mapminmax(input_train)
[outputn,outputps]=mapminmax(output_train); 

%% BP网络训练
% %初始化网络结构
net=newff(inputn,outputn,8);%隐含层节点数量经验公式p=sqrt(m+n)+a ,故分别取2~13进行试验

net.trainParam.epochs=100 % 对整个训练组训练100次
net.trainParam.lr=0.001;% 设置学习率
net.trainParam.goal=0.0001;  %网络输出和目标值的差的平方再求平均值

%网络训练
net=train(net,inputn,outputn);

%% BP网络预测
%预测数据归一化
inputn_test=mapminmax('apply',input_test,inputps);
 
%网络预测输出
an=sim(net,inputn_test);
 
%将输出的结果
BPoutput=mapminmax('reverse',an,outputps);

%% 结果分析

figure (1)
plot(BPoutput,'bo')
hold on
plot(output_test,'gp');
legend('预测输出','期望输出')
title('BP网络预测输出','fontsize',11)
ylabel('函数输出','fontsize',11)
xlabel('样本','fontsize',11)
set(gca,'XTick',[1:1:11])
zoom on;
grid on
%预测误差
error=BPoutput-output_test;


figure (2)
x = 1:1:275;
plot(x,error,'-o')
title('BP网络预测误差','fontsize',11)
ylabel('误差','fontsize',11)
xlabel('样本','fontsize',11)
set(gca,'XTick',[1:1:275])
axis([1,300,-5,10])
str1=num2str(error',2);
text(x,error,str1)
grid on

figure (3)
plot((output_test-BPoutput)./BPoutput,'r');
set(gca,'yticklabel',{'0','5%','10%','15%','20%','25%','30%','35%','40%','45%','50%'});
title('神经网络预测误差百分比')
ylabel('百分比','fontsize',11)
xlabel('样本','fontsize',11)
set(gca,'XTick',[0:1:6])
grid on

error=sum(abs(error))/275
w1 = net.iw{1,1};%输入层到中间层的权值
w2 = net.lw{2,1};
b1 = net.b{1};%中间各层神经元阈值
b2 = net.b{2};

toc

运行save net 将保存模型

2.调用模型,进行对新的数据进行预测

%% 清空环境变量
clc
clear
tic
load('D:\net1.mat');
data=xlsread('第五个参数5.xlsx', 'Sheet1', 'A2:ABA51');
input_test=data(1:50,1:729)';
% inputn_test=mapminmax('apply',input_test,inputps);
inputn_test=mapminmax(input_test,inputps);
an=sim(net,inputn_test);
BPoutput=mapminmax('reverse',an,outputps)

  • 24
    点赞
  • 342
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
BP神经网络是一种常用的人工神经网络模型,可用于数据回归预测问题。在MATLAB中,可以使用神经网络工具箱来实现BP神经网络数据回归预测。 首先,需要准备好训练数据和测试数据集。训练数据集包括输入样本和对应的输出目标值,用于训练神经网络模型。测试数据集用于评估训练好的神经网络模型的预测性能。 接下来,在MATLAB中创建一个神经网络模型,并设置模型的输入层、隐藏层和输出层的节点个数。可以使用“feedforwardnet”函数来创建反向传播神经网络模型。 然后,使用“train”函数对神经网络模型进行训练。在训练过程中,需要选择合适的训练算法、学习率和停止条件等参数,以确保模型能够收敛并得到较好的预测结果。 在训练完成后,可以使用训练好的神经网络模型对测试数据进行预测。使用“sim”函数将测试数据输入神经网络模型中,得到网络的输出结果。 最后,可以计算预测结果与实际目标值之间的误差,评估模型的预测性能。常用的评估指标包括均方误差(MSE)、决定系数(R-squared)等。 需要注意的是,在使用BP神经网络进行数据回归预测时,还需要对输入数据进行归一化处理,以避免不同量纲的特征对模型的影响不一致。可以使用MATLAB中的“mapminmax”函数来实现数据归一化。 综上所述,以上是利用MATLAB中的神经网络工具箱实现BP神经网络数据回归预测的大致流程。具体的代码实现需要根据具体的问题和数据集进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值