数学建模社区-数学中国

标题: 基于BP神经网络的预测算法 [打印本页]

作者: 2744557306    时间: 2024-5-22 11:23
标题: 基于BP神经网络的预测算法
%% 清空环境变量
# B8 n% p1 T6 M5 y( aclc
* `: _# j3 f: L5 O% N7 \clear& a( P- m7 ^+ W, k; O3 e6 e' d* T+ S

1 J- Y, }1 ~) k: t%% 训练数据预测数据提取及归一化" d5 i2 |9 k$ g5 M3 G
%下载输入输出数据; m3 j0 R. q7 {. T1 |1 W# f
load data input output$ W. y) M, P& G0 R
, P* k& a9 T+ }  w
%从1到2000间随机排序
+ L( F0 f0 L/ m' O. m( Ak=rand(1,2000);
8 d+ n9 W  A5 ?& q$ v% w( G[m,n]=sort(k);" L) J; c  t  j0 C- \' z0 x

4 t7 {! N6 p* w% ]%找出训练数据和预测数据
/ `, @6 L. t; e5 W5 yinput_train=input(n(1:1900),';9 w: O# Q! f$ ^  X9 `& v0 r
output_train=output(n(1:1900));
! {2 X7 W) U& g2 X; h( rinput_test=input(n(1901:2000),';; W# d4 x0 x# l/ E# Y6 h6 P
output_test=output(n(1901:2000));( p1 a& r1 m5 ~# p: F
  K1 n! U4 u6 F  A; v
%选连样本输入输出数据归一化% o, V, ~; S& L/ Z1 C* U
[inputn,inputps]=mapminmax(input_train);5 e5 h  o; L) @6 H% f
[outputn,outputps]=mapminmax(output_train);
6 l! K' Z3 w2 l& S2 r- k- T
( m+ ?0 E9 n+ x. P$ [%% BP网络训练7 T4 `; d. d( r- \1 m1 H+ V
% %初始化网络结构  y8 I5 u8 O, b7 T5 V3 C
net=newff(inputn,outputn,5);2 P# K- }9 X! U$ m$ d; y
1 D+ i; U& J4 i/ y% T3 t; B9 O; X
net.trainParam.epochs=100;& u- O$ `7 K7 E% g9 P: R
net.trainParam.lr=0.1;+ Q( l! J: R  o& D; e# ?* N* ^1 Z
net.trainParam.goal=0.00004;
' [" E0 a& @% t7 g5 Z8 h4 F* Z. @" `5 S9 a. E0 H
%网络训练. n. c, `  ]6 ?4 c; O8 Y
net=train(net,inputn,outputn);
$ z2 b4 I- h: i& @; E! a  u6 P9 M! }6 X6 K; ?
%% BP网络预测' {0 |" w2 H" k" U7 r( ]4 h6 @1 S
%预测数据归一化, D4 D3 U. W9 u0 [0 ^1 l3 Z, o, H
inputn_test=mapminmax('apply',input_test,inputps);  Y" v" J( Z/ H' I, I
" o# @- J) H/ S
%网络预测输出
+ a. g" b- o9 O# tan=sim(net,inputn_test);" I8 ^* i/ ]$ o# T
$ }7 F9 c5 k0 ~+ ^- ?/ r
%网络输出反归一化' t* C8 N+ [+ L
BPoutput=mapminmax('reverse',an,outputps);
$ m( N' e( @. y, u& N; X4 w* Q# V& F  w6 k7 i- a+ v* G
%% 结果分析
1 B- m5 `2 o4 H3 X$ w" s
$ H! `) T5 }2 @/ ~1 X$ N7 hfigure(1)* u% @+ d. o/ E* v" Q5 T  g
plot(BPoutput,'g')
& W! u, y- G7 a, r0 khold on5 e; K  W5 n: ]) R+ V
plot(output_test,'-*');" K: U8 X& I+ v8 m  y- H3 g  f
legend('预测输出','期望输出')% ]. w: s* r7 o5 x/ b" L+ {: s9 J5 y
title('BP网络预测输出','fontsize',12)/ ~. T  k- X& Z: M; {7 ?3 E7 Y
ylabel('函数输出','fontsize',12)
% y" X  M' `6 U2 K6 N8 pxlabel('样本','fontsize',12)
* @; x& Y( R. t$ C/ v8 \7 _4 D5 t$ Q5 ^%预测误差2 C& i. z( u+ ?& j" {) ?  M' D
error=BPoutput-output_test;
6 g2 i3 i4 O  D! g  q! h
& F0 @( `1 ~! w3 T7 t; l* o+ t6 u3 C3 a+ [9 ]7 d) c
figure(2)
8 G2 p+ A4 K7 w3 dplot(error,'-*')$ K; \. C; ^; C. P; I
title('BP网络预测误差','fontsize',12)
$ `7 m* ~1 c+ ], Eylabel('误差','fontsize',12)
2 S  V' D" Z- X. x  t3 s/ Lxlabel('样本','fontsize',12)' L+ q% Q2 q" g  v! z% C4 c" T
7 Y6 A% T0 T. U# N3 @8 X
figure(3)4 t( X2 ~% h! E1 b) v( {& U
plot((output_test-BPoutput)./BPoutput,'-*');8 @) Z* c- a( n8 q
title('神经网络预测误差百分比')
, z" W5 p2 E  K  Z* r
( {( Q! j; X7 P7 l$ a- i2 verrorsum=sum(abs(error));) W) t$ f5 ~# B/ i; K
以上代码是一个简单的基于BP神经网络的回归预测模型。下面是代码的详细解释:8 _, f' H: ^5 n. l1 T

; [0 Z* n1 W9 R& a1. 清空环境变量并导入训练数据(input和output)。8 N0 W5 `5 c1 N$ z4 s8 F
0 ]) _& C2 F$ w* R% v* T6 D( x6 F& R
2. 对输入数据进行随机排序,将数据集分为训练数据和预测数据。* _. z8 b  h( K0 P- a- H

& M+ ~% v! L2 m5 P; ^5 m, [3. 对训练数据进行归一化处理,使用mapminmax函数将输入数据和输出数据进行归一化操作。
0 l$ R2 u$ g. q; m$ C
& J# d2 |. Q) C; f, \6 b, D4 G4. 创建一个BP神经网络模型(使用5个隐藏层神经元),定义网络的训练参数(如训练轮数、学习率、目标误差等),并进行网络训练。
, ^8 J. b3 C9 u" L3 ~1 a7 D9 o# A( _; d8 ~, t' |, Y" N
5. 对预测数据进行归一化处理并使用训练好的神经网络进行预测,得到预测输出BPoutput。. v. a5 p7 v" R1 w  z- E
0 e7 i' I; s" L, W( H0 ~$ \6 q
6. 将预测输出BPoutput反归一化,得到最终的预测结果。
. l6 C7 \- z8 z  B" i% K* J5 U5 O
# _2 h) f3 d- @  v0 I: K7. 绘制结果分析图表:第一个图表展示预测输出和期望输出的对比,第二个图表展示预测误差,第三个图表展示神经网络预测误差百分比。
4 |# ]. E2 L4 g% h6 C, U
5 s; w' l/ ~0 {+ `0 D1 n9 [' J& k8. 计算预测误差的绝对值之和,存储在errorsum变量中。4 X4 F9 {% S" q8 a* q9 T% D/ {
2 a7 X) n! w% p8 i4 s  H
总的来说,该代码实现了使用BP神经网络进行回归预测的过程,包括数据的处理、网络的训练、预测结果的计算和分析结果的展示。* g5 Z  a4 r* ^! l3 v: M, m
+ D5 @5 x8 X: |

/ H' `/ R6 Z& C8 |+ }
. N: ~, m2 C4 \9 t) j. G5 `4 c( }) Z/ m& g7 y

chapter2_1.m

1.29 KB, 下载次数: 0, 下载积分: 体力 -2 点






欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5