QQ登录

只需要一步,快速开始

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

[已经解决] BP神经网络预测遇到一个疑问,麻烦过来看看

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

23

主题

8

听众

372

积分

升级  24%

  • TA的每日心情
    开心
    2014-10-4 18:19
  • 签到天数: 102 天

    [LV.6]常住居民II

    自我介绍
    本人是在校学生,即将参加有史以来的第一场国赛,希望能在这里获得帮助。
    跳转到指定楼层
    1#
    发表于 2013-9-8 17:22 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta
    本帖最后由 数学不烦 于 2013-9-9 21:56 编辑 : E- Z" _% A2 Z

    1 G: R0 ~% g, m( E7 Y各位朋友,有一个问题请教你们。   我用BP神经网络做预测的时候(下面是我的代码)遇到一个问题。  首先我尝试在代码里面不把数据归一化,这样的出来的结果很差(R=0.46).但我把数据作归一化 与 反归一化 之后 确实R提高了很多(R=0.99),这时问题就来了,请看最下面的测试结果代码,那里只有输入(没有输出,因为是预测),premnmx 归一化要有输出的变量T,但我只有输入数据,没有输出数据,因此反归一的结果(最后的预测结果)也无法做到。那么我的预测就不是做不了吗?  很纠结,查了很多资料了,还是不知道怎么解决。8 B' V- k8 M; N- S
    国赛准备到了,希望热心的朋友懂的不吝赐教,我把问题写得很认真,希望各位能帮我解决这个问题,谢谢了。
    1 f; L& Y" `4 n& O6 ]4 e* s, N" @" E3 K! A; }) v
    clear
    " J6 M  l- j4 Hclc
    ' |  I4 c5 S" _. j* G%输入数据--以一列作为一个输入数据
    4 C, A+ L" ^$ i7 h9 i/ i: s& Gx1=[227.5 286.9 236.3 300.6 243.0];- C0 F0 }. H3 P- B. K4 B
    x2=[286.9 236.3 300.6 243.0 354.1];# x: U# S  R% n% l# `+ o* ^
    x3=[236.3 300.6 243.0 354.1 294.1];' N( F. C9 r/ P. x/ Q1 K
    x4=[300.6 243.0 354.1 294.1 361.4];: h* M  J) S) o, ^# l- |  |
    x5=[243.0 354.1 294.1 361.4 333.7];- J; ?4 E2 B* O& F
    x6=[354.1 294.1 361.4 333.7 426.4];* |3 ~8 N7 e- Z) o, x$ W& L
    x7=[294.1 361.4 333.7 426.4 434.4];. l5 }  Y# T0 B+ u* p
    x8=[361.4 333.7 426.4 434.4 449.9];: i/ k, ]4 K4 W2 p" [/ }5 y
    x9=[333.7 426.4 434.4 449.9 431.9];7 G3 ~' A* t' G, n6 k' M

    $ P% f( n% p. cP=[x1;x2;x3;x4;x5;x6;x7;x8;x9]';
    % _4 r% P" n% x2 K%输出数据--以一列作为一个输出数据. E8 Y, T' g& q' O4 N* c# z5 a7 o
    y1=[354.1 294.1 361.4 333.7 426.4];. q6 q' P( N1 ]. p! D
    y2=[294.1 361.4 333.7 426.4 434.4];
    ! P8 c& h* C& b* x% K: e6 j* E6 ^y3=[361.4 333.7 426.4 434.4 449.9];5 _; O) G) s! o9 j# F8 b8 Q
    y4=[333.7 426.4 434.4 449.9 431.9];
    $ w3 q: E  h% O* z5 a0 Jy5=[426.4 434.4 449.9 431.9 454.0];, p) A7 o1 n( |0 B( l9 C3 r
    y6=[434.4 449.9 431.9 454.0 655.6];4 U0 N* L, D) C7 `# `" l3 |
    y7=[449.9 431.9 454.0 655.6 907.0];
    ' e3 [3 b0 W, e! }" Ny8=[431.9 454.0 655.6 907.0 1112.5];
    7 m! ]  E: \8 V8 R1 Oy9=[454.0 655.6 907.0 1112.5 1401.1];
    ! J% s0 A- I4 {2 v" C7 s
    ' U7 A1 @# h& d1 Y6 X; iT=[y1;y2;y3;y4;y5;y6;y7;y8;y9]';
    # Y: E2 `$ o% H5 S+ P% L) P
      n4 y* j& r. F, p%归一化* Q; x6 j. w' Q$ c
    % [P,minp,maxp,T,mint,maxt] = premnmx(P,T);$ E# l; n# |' i% P
    %建立网络
    / F. g) a; A# I  `) f3 D+ V9 H%其中[10,3]代表有一个隐含层,里面有10个神经元;“3”代表有三个输出数据
    / o& P+ X# s5 w) H%{'tansig','purelin'}与[10,3]对应,意思为隐含层 与 输出层* [+ D$ T4 S6 f+ b
    %'traingdm' 表示调整权重,缩小误差的数学函数
    $ J* S5 h: W/ C3 F- v%↓创建一个新的前向神经网络  - n/ O. c8 Q: ~% D. ~" [' W
    net = newff(minmax(P),[6,5],{'tansig','purelin'},'traingdm')
    ) a* j6 c2 F4 r* h
    + A5 g  ^: w" x3 S%  当前输入层权值和阈值 6 v, X- a0 p" A3 n4 |: d
    inputWeights = net.IW(1,1)
    ' N8 T5 D) S  ~! Cinputbias = net.b(1)2 V5 C0 ~* }6 Y5 W6 {6 G  m

    + ]" U: o2 B+ h, T%  当前网络层权值和阈值
    & C$ L' x# ^  u; J2 o- ], ~layerWeights = net.LW(2,1)8 `0 Q! f7 P5 Z& m, f8 R$ [: O
    layerbias = net.b(2); l- f. X# Y; G7 j7 k
    5 h: g* S2 {9 N! V( X" j; t
    %  设置训练参数
    + {6 n/ |2 P4 }3 ~6 M4 n0 Unet.trainParam.show = 50;
    + @: u' S: N7 C: Onet.trainParam.lr = 0.05;
    + t; F3 U- g& h" U- \) X7 inet.trainParam.mc = 0.9;& \* P5 k" H9 I+ @5 ?5 W6 Y
    net.trainParam.epochs = 10000;  %每计算10000次出一次结果
    . W$ V: u; w6 N8 }& L8 xnet.trainParam.goal = 1e-6;     %期望达到的误差(认为是合适的误差)+ r$ S" U2 D' C1 s8 M" P4 s
    ! H( }$ I# R7 Q8 {
    %  调用 TRAINGDM 算法训练 BP 网络3 a* A3 f, P2 R$ T: t' S; J
    [net,tr] = train(net,P,T);      
    ( e! r# ]; Y+ w5 w* X: `6 E% [1 M1 v  F' v- o* u, p8 L
    %  对 BP 网络进行仿真4 v6 a( D4 I' O4 v( l7 A/ O) ~
    A = sim(net,P);                 %A为输出结果2 J* z, f5 Q, Q. Z# X$ g; ]; m, U
    $ M8 H# |' |9 w
    %反归一化
    8 ?, Z5 v4 ?, g% N4 M%  A = postmnmx(A,mint,maxt);' e1 \: {9 O. z

    3 J$ @! H0 U  f0 p" P9 {1 m0 [%  计算仿真误差  " K- U4 R% ?% P! K& j5 X) s
    E = T-A;                        %原来的输出 - 训练输出 = 误差* z$ s2 v- |' G1 a* L( J
    MSE = mse(E)                    %输出误差
    & [( r& j0 U6 s' k* B' W# F* R# K8 n0 K) [" s
    %下面是输入数据,测试结果
    : m2 f% u8 l% ~2 \' fx=[454.0 655.6 907.0 1112.5 1401.1]';" {% b8 R  F3 h8 ~, I; i2 W
    Y = sim(net,x)
    . M( ]. \9 v1 A0 N6 J" @
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    magic2728 实名认证    中国数模人才认证   

    61

    主题

    478

    听众

    4861

    积分

    升级  95.37%

  • TA的每日心情
    慵懒
    2014-9-29 19:37
  • 签到天数: 409 天

    [LV.9]以坛为家II

    群组数学中国 2015美赛护航

    群组数模专题强化培训

    群组建模思维养成培训

    群组2015美赛护航(强化)

    群组2013年数学建模国赛备

    回复

    使用道具 举报

    kaito1412        

    63

    主题

    8

    听众

    3098

    积分

    升级  36.6%

  • TA的每日心情
    开心
    2020-7-21 15:56
  • 签到天数: 829 天

    [LV.10]以坛为家III

    回复

    使用道具 举报

    19

    主题

    11

    听众

    272

    积分

    升级  86%

  • TA的每日心情
    郁闷
    2014-10-23 09:29
  • 签到天数: 59 天

    [LV.5]常住居民I

    不知道你最后是怎么解决的,感觉你最后预测的时候没有把输入数据进行归一化,即要对x进行归一化,再对y进行反归一化,这是我的看法,不知道对不对
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-1-15 07:07 , Processed in 0.415602 second(s), 72 queries .

    回顶部