基于BP神经网络的预测算法

本文介绍了如何在Matlab中使用BP(BackPropagation)神经网络对数据进行训练和预测,包括数据预处理、网络结构初始化、训练过程以及结果分析,重点展示了预测输出、误差计算和误差百分比可视化。
摘要由CSDN通过智能技术生成

BP(Back Propagation)网络是1986年由Rumelhart和McCelland为首的科学家小组提出,是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一。

该网络结构是2-5-1,data链接:https://pan.baidu.com/s/1MpyE3I1Q9XWxJXd6uk-0BA 
提取码:hp9q  

%% 清空环境变量

clc
clear

%% 训练数据预测数据提取及归一化

%下载输入输出数据

load data input output

%从1到2000间随机排序

k=rand(1,2000);
[m,n]=sort(k);

%找出训练数据和预测数据

input_train=input(n(1:1900),:)';
output_train=output(n(1:1900));
input_test=input(n(1901:2000),:)';
output_test=output(n(1901:2000));

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

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

%% BP网络训练

% %初始化网络结构

net=newff(inputn,outputn,5);%隐藏层为5
net.trainParam.epochs=100;%表示训练的轮次
net.trainParam.lr=0.1;%表示训练的学习率
net.trainParam.goal=0.00004;%训练误差限制

%网络训练

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,':og')
hold on
plot(output_test,'-*');
legend('预测输出','期望输出')
title('BP网络预测输出','fontsize',12)
ylabel('函数输出','fontsize',12)
xlabel('样本','fontsize',12)
%预测误差
error=BPoutput-output_test;


figure(2)
plot(error,'-*')
title('BP网络预测误差','fontsize',12)
ylabel('误差','fontsize',12)
xlabel('样本','fontsize',12)

figure(3)
plot((output_test-BPoutput)./BPoutput,'-*');
title('神经网络预测误差百分比')

errorsum=sum(abs(error));

源自:《Matlab神经网络43个案例分析》。

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值