QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2359|回复: 0
打印 上一主题 下一主题

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

[复制链接]
字体大小: 正常 放大

1189

主题

4

听众

2934

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-5-22 11:23 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
%% 清空环境变量
- G9 o. V; Z6 a+ sclc: t- @  ^1 h+ M, X. I4 H% ?$ x1 V4 z
clear7 v5 z4 u. m, _* F; O/ y4 _

4 B2 B1 t3 q1 x! L, i7 e%% 训练数据预测数据提取及归一化
0 J8 l/ m7 n! f5 E  @, s%下载输入输出数据1 }. v6 a" \) h0 c8 Y6 r5 m& v$ v2 G
load data input output) k4 ^( \. c1 N, `, t/ C3 r

( N# R/ `; e0 j  s9 X; D* O%从1到2000间随机排序
9 j. {* E- [! O9 ?) x3 Ik=rand(1,2000);
0 P% v8 O1 e$ c/ e& N3 ~[m,n]=sort(k);9 i( z2 r# X6 K5 `: N

0 P5 X0 W2 j1 S) c# v- H% s% D6 g%找出训练数据和预测数据9 b! p7 F  M$ A$ Z2 z, T4 H: t/ ]
input_train=input(n(1:1900),';
' Q- c4 x6 V' u  L# V/ Eoutput_train=output(n(1:1900));$ }# Z' }, d5 t! B$ J
input_test=input(n(1901:2000),';8 _" h5 B3 e! \# l/ D, W
output_test=output(n(1901:2000));6 [& t1 T3 S2 y1 p) r, N' T0 y
5 [' t' V/ C6 I" Y% T1 A: ?
%选连样本输入输出数据归一化
1 A$ A+ i# @1 k6 [! T; p! }[inputn,inputps]=mapminmax(input_train);- {" Z3 ^- f; e0 w! \" S* z/ j* [' I
[outputn,outputps]=mapminmax(output_train);, a" y  m, L+ z& c$ [+ b, C3 I

' v, h; ?% e( S! e%% BP网络训练
1 r3 x: R1 G1 [% %初始化网络结构
, ^4 X7 K  ~3 q- c" b; jnet=newff(inputn,outputn,5);
% X# N( H, J* C' N9 Q2 D+ K: J$ ]- Y$ X! @+ I
net.trainParam.epochs=100;2 w$ @5 G/ D% p" Y8 k+ D+ O
net.trainParam.lr=0.1;( U5 F* @  k' @) u
net.trainParam.goal=0.00004;0 f9 F% l0 T9 y$ Y) V

# h% n7 f# n3 b6 ~8 m; u%网络训练' x, V% i7 I& e2 A5 U- c/ ?6 H
net=train(net,inputn,outputn);
$ e2 [( w, L3 x1 A
& c+ r. q; ]& Y4 Z%% BP网络预测- {" f% v$ m  l2 H4 f
%预测数据归一化
) U- C' F& l! ?  {2 z4 a, winputn_test=mapminmax('apply',input_test,inputps);) l" `( m5 V: i, r/ Q8 t
# w5 x3 @' T5 u/ c* \" P# K- G
%网络预测输出
6 B) Q$ `5 T$ U( N! `9 m* m/ zan=sim(net,inputn_test);3 J* I9 Z5 `/ t7 s% o

( y% w# L9 p: Z2 `0 Z%网络输出反归一化
- q! R* X. w' `+ KBPoutput=mapminmax('reverse',an,outputps);
$ x3 A( K. m2 a( i5 r' R. t$ W& [0 p/ f
%% 结果分析
* A: a; _1 B7 U3 E- V6 D- i2 I
8 O2 q- p8 x' Mfigure(1)
% q3 z6 I! y5 p$ e6 Xplot(BPoutput,'g')) b! {4 r; |3 M
hold on
) O+ m1 P$ a2 }; s3 R* s9 j: Z, T5 hplot(output_test,'-*');, O. ?$ Q8 ^2 C# k' q
legend('预测输出','期望输出')
- |7 c4 r" w! j  \2 Ptitle('BP网络预测输出','fontsize',12)
* ]& P" x$ e; T' p! L7 I0 q# bylabel('函数输出','fontsize',12)
0 ?: c  ~$ `3 }. M# E3 M4 m5 hxlabel('样本','fontsize',12)
& w( C- H0 c$ Y%预测误差2 [% W. f4 e4 k
error=BPoutput-output_test;
( f8 B( ]+ ^1 U  d. x
7 t# F4 O4 P/ X( w( _, V8 H$ p6 ^5 T* B9 d+ i3 x5 U
figure(2)6 M( \+ O- U$ P6 o8 x
plot(error,'-*')
. i2 a" h# l/ w1 w$ Vtitle('BP网络预测误差','fontsize',12)
0 L5 N6 S1 m6 K  C6 f  z6 E; dylabel('误差','fontsize',12)9 v6 K: l  X5 Z: h' Y2 K6 A  g
xlabel('样本','fontsize',12)
+ L2 f, s& e8 [+ ^2 W4 _+ d! |+ `( d0 H! X
figure(3); h9 o) R+ E& T1 E9 ^* u: Q
plot((output_test-BPoutput)./BPoutput,'-*');
& c* F" v9 [1 A( t9 W& ititle('神经网络预测误差百分比')
1 J9 m& N1 P7 v+ V) i* z! x
! Q' k; E! N; kerrorsum=sum(abs(error));5 V0 A( S7 L# v) `% N; N# x7 t* H
以上代码是一个简单的基于BP神经网络的回归预测模型。下面是代码的详细解释:8 T0 J! C" r& T0 j2 u' E1 M" `
9 \  _# G" J7 s7 C" k
1. 清空环境变量并导入训练数据(input和output)。! g: r! E5 x- W3 v+ P( P
1 o& Z* C+ O1 C! E  l
2. 对输入数据进行随机排序,将数据集分为训练数据和预测数据。
2 D/ C7 ^9 m. O: L) v5 n
* E9 N$ q0 m2 s1 ^3 Q, ~3. 对训练数据进行归一化处理,使用mapminmax函数将输入数据和输出数据进行归一化操作。
  h) c% D) _! Y8 J1 g6 K% _4 b
) A, K4 N9 b: i0 h' d4. 创建一个BP神经网络模型(使用5个隐藏层神经元),定义网络的训练参数(如训练轮数、学习率、目标误差等),并进行网络训练。+ v: @  T0 g1 z# N1 G+ g; p
0 r1 V: X. H; r* c! U
5. 对预测数据进行归一化处理并使用训练好的神经网络进行预测,得到预测输出BPoutput。
! Q! o; U8 y  n7 i4 i' R  A: G0 [5 M/ o
6. 将预测输出BPoutput反归一化,得到最终的预测结果。
1 \( X; \/ U: N0 E
% X- K. Z% B/ O! P, L7. 绘制结果分析图表:第一个图表展示预测输出和期望输出的对比,第二个图表展示预测误差,第三个图表展示神经网络预测误差百分比。! g9 _8 h0 f0 v  p" k/ ^
  d1 m" z5 R5 h& Z& f" @8 @4 V1 c
8. 计算预测误差的绝对值之和,存储在errorsum变量中。0 ^0 [) @1 O& s8 l
. r9 X  N+ U- B& Q/ t
总的来说,该代码实现了使用BP神经网络进行回归预测的过程,包括数据的处理、网络的训练、预测结果的计算和分析结果的展示。
( K; v- Y! I# X& _; E- K3 o+ V( y, L2 ]$ Q9 @/ O- b( j: w
# j: j4 f7 a! X) x* q1 ^( k
6 p/ [8 a" c6 i. Z+ V3 [0 p# {
: ~" b) A5 k0 E

chapter2_1.m

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

zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
您需要登录后才可以回帖 登录 | 注册地址

qq
收缩
  • 电话咨询

  • 04714969085
fastpost

关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

手机版|Archiver| |繁體中文 手机客户端  

蒙公网安备 15010502000194号

Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

GMT+8, 2026-8-4 10:48 , Processed in 0.407706 second(s), 54 queries .

回顶部