QQ登录

只需要一步,快速开始

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

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

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

845

主题

1

听众

2212

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-5-22 11:23 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
%% 清空环境变量! r! _5 D% U% O5 ^) C
clc" B- Z* a  i' F- `6 }
clear
4 F; H; f9 g# l3 H: ?4 X1 g! D2 y8 }: e. T
%% 训练数据预测数据提取及归一化0 H( v+ Q0 {; e/ |/ y) \4 \" P
%下载输入输出数据
9 W% y6 Y3 @7 W# O& l/ X% iload data input output
3 U5 F6 J6 H! |7 Y; o% l$ @, F5 u( k: ?! D0 [& p  l+ A
%从1到2000间随机排序" c3 X: u7 k& I1 z6 g. e9 F2 G
k=rand(1,2000);
2 o: ]  ^" A" S, l3 q4 U! i[m,n]=sort(k);9 B9 z, v, }8 J' N# d: I+ B" i
3 U. v& f& y- O
%找出训练数据和预测数据
, x; K7 o# e! ^/ U  yinput_train=input(n(1:1900),';
$ n5 g& x' K( koutput_train=output(n(1:1900));! q# F& j" I; C
input_test=input(n(1901:2000),';
4 k1 s) D9 K# S5 t, U# uoutput_test=output(n(1901:2000));
( d2 \; ^* J' w; c1 j/ A* ~) ~9 F% m5 l( K/ W+ F
%选连样本输入输出数据归一化) u1 ?* `, ]& j4 Q
[inputn,inputps]=mapminmax(input_train);  |/ ]+ Q( R0 c3 ?9 }
[outputn,outputps]=mapminmax(output_train);
) w6 |$ [: |, X  d  Q9 r9 L- l4 L
  y4 `$ ]/ g  F" P3 [% i" G  F# u; _4 `%% BP网络训练
( P- v% K" w# ]8 r( k$ ^% %初始化网络结构
( I% B4 }# D2 J8 E2 I) N6 S# Jnet=newff(inputn,outputn,5);, Q! J, O3 [2 L* W  d* V

3 g! O1 |3 h  ^- |net.trainParam.epochs=100;# E8 u  p7 X. {. n1 D5 S3 H
net.trainParam.lr=0.1;
7 o% a( W5 y9 Vnet.trainParam.goal=0.00004;2 R6 i* }0 t9 |/ F( E4 t/ e' D* R, [

' g, u2 s+ ~5 s- @%网络训练# \6 C+ `9 |( k' f
net=train(net,inputn,outputn);
% S& N3 @* i( G! I) i1 s6 K7 s9 V1 X3 u) B6 B  ]& F- Q8 n7 O1 r
%% BP网络预测1 p7 \4 r' \5 n6 H+ p' e% p
%预测数据归一化9 G2 v6 Z; j. x$ n4 Q
inputn_test=mapminmax('apply',input_test,inputps);
) a, q3 |7 F: k7 h
# ]# z2 G9 G  _7 W# W# B%网络预测输出
: D' N6 Y: \6 G" man=sim(net,inputn_test);
' G; l/ d2 c9 m) }+ Z% |4 b- e% C# ^) ^2 s3 H' J0 w
%网络输出反归一化* J5 s: r3 j& B1 W4 ~
BPoutput=mapminmax('reverse',an,outputps);
& U' h- E- I2 R" B# u' O( J& J, g* |; ^9 m! F( x% `
%% 结果分析+ t( o: X2 ?* ~" a% e7 L$ i
6 U: p; [0 y: [- H" y
figure(1)
! e+ v6 l' D* u" _plot(BPoutput,'g')
) d- A$ ^0 l2 U' Bhold on
- Y. h" Z. R* q* t- w3 l4 Kplot(output_test,'-*');; q8 x- C  N. }1 _& z* W3 S- Z
legend('预测输出','期望输出')
! |1 e) ?( R. z1 {+ Ntitle('BP网络预测输出','fontsize',12)! x- k+ y! i! e
ylabel('函数输出','fontsize',12)# O0 \1 B; @! e6 [) t9 c
xlabel('样本','fontsize',12)
. x5 ]2 T- Q3 |' S* F( q- r%预测误差& t" W$ ]7 r+ U8 ~! }% S# T
error=BPoutput-output_test;: t, w4 j( V) K
8 W, w& F9 ]; s# [  s9 o" t

! d0 Z8 M% O' ^$ s& w( w9 T- zfigure(2)
$ C5 s% @3 Q7 K9 B, H) F) iplot(error,'-*')
- x1 }' [, K; S1 X- l& u' o  Etitle('BP网络预测误差','fontsize',12)
/ j; J/ _! R0 x7 Mylabel('误差','fontsize',12)
. x' O7 B# u* U. hxlabel('样本','fontsize',12)/ b* l- v6 f2 F% e  g" I* O. X: b" T

, z! {1 m8 O0 c1 pfigure(3)
. q. }  z/ j0 A- Oplot((output_test-BPoutput)./BPoutput,'-*');
5 b' B' A8 M% c! _# F: jtitle('神经网络预测误差百分比')
4 C5 f- L+ T3 d, a+ p( z2 q
, {& h$ F3 u7 ^# merrorsum=sum(abs(error));! _$ ~" t  Q1 x4 x
以上代码是一个简单的基于BP神经网络的回归预测模型。下面是代码的详细解释:# @$ I6 S4 o: O# ]6 j# n4 |" Q0 a
6 j5 R: d& f7 o* e
1. 清空环境变量并导入训练数据(input和output)。
* P+ c# t' _9 h/ I  z
1 g# ], J' o, d; e5 }0 h% o1 x2. 对输入数据进行随机排序,将数据集分为训练数据和预测数据。, _. m1 s. f% J: ~3 L
. I$ r( Z' H% w. o  Y. q
3. 对训练数据进行归一化处理,使用mapminmax函数将输入数据和输出数据进行归一化操作。3 B7 N/ l: H( x1 p( a! [5 B
0 D" N9 j7 s8 v1 {4 C9 L
4. 创建一个BP神经网络模型(使用5个隐藏层神经元),定义网络的训练参数(如训练轮数、学习率、目标误差等),并进行网络训练。, y# U' i: z8 `4 @, ^: V
8 `# g" G4 X/ u: t  j" y0 m
5. 对预测数据进行归一化处理并使用训练好的神经网络进行预测,得到预测输出BPoutput。5 Y; A/ L" j/ a
8 c1 A1 @& m: P! ~0 m, ]' [5 T4 I  X, g
6. 将预测输出BPoutput反归一化,得到最终的预测结果。* ]+ n8 |8 x1 U7 J
) f' a: ^5 U6 G6 B
7. 绘制结果分析图表:第一个图表展示预测输出和期望输出的对比,第二个图表展示预测误差,第三个图表展示神经网络预测误差百分比。
0 F8 S2 D& I0 e  n; z1 e8 |3 e
; b- Z. h; E, }4 {+ x8. 计算预测误差的绝对值之和,存储在errorsum变量中。
! X$ J) {9 H, z" ]" ?0 c+ W* e" h2 o9 D5 _  G3 U* a1 h( Y" D
总的来说,该代码实现了使用BP神经网络进行回归预测的过程,包括数据的处理、网络的训练、预测结果的计算和分析结果的展示。8 d& K  b  Q6 _, b7 e) o& Y8 q3 ^
+ d5 [) E! T! o

( }' {0 F8 y5 [4 T% _
5 Z. n3 m- X; H4 e, ]7 f& L6 s
; x+ n; \! m  A7 H) f, \" Y9 H

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, 2024-6-18 10:21 , Processed in 0.348356 second(s), 54 queries .

回顶部