QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 4235|回复: 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 编辑 8 `2 U5 U! ?2 y8 `! d

    $ @( Z. J2 Q& |4 g+ E( \& E  X: v9 ^- G7 \各位朋友,有一个问题请教你们。   我用BP神经网络做预测的时候(下面是我的代码)遇到一个问题。  首先我尝试在代码里面不把数据归一化,这样的出来的结果很差(R=0.46).但我把数据作归一化 与 反归一化 之后 确实R提高了很多(R=0.99),这时问题就来了,请看最下面的测试结果代码,那里只有输入(没有输出,因为是预测),premnmx 归一化要有输出的变量T,但我只有输入数据,没有输出数据,因此反归一的结果(最后的预测结果)也无法做到。那么我的预测就不是做不了吗?  很纠结,查了很多资料了,还是不知道怎么解决。
    7 {# O% }2 a4 N0 c# J国赛准备到了,希望热心的朋友懂的不吝赐教,我把问题写得很认真,希望各位能帮我解决这个问题,谢谢了。0 r5 P& N4 A6 t0 ~" Y
    4 v  z- b5 L+ W% k8 S
    clear
    : [4 o4 n9 {' i1 P3 Bclc$ M2 ]. V- l% N/ c
    %输入数据--以一列作为一个输入数据
    + n8 L/ ?9 q# V0 m7 m  i: a+ xx1=[227.5 286.9 236.3 300.6 243.0];
    ( J+ ?7 k8 r# u! Z& ]) Xx2=[286.9 236.3 300.6 243.0 354.1];
    1 d3 j+ R) s+ Q7 yx3=[236.3 300.6 243.0 354.1 294.1];! Y% Z# r) @6 ]% _
    x4=[300.6 243.0 354.1 294.1 361.4];
    0 O* r  W0 `+ o+ d# r3 x; dx5=[243.0 354.1 294.1 361.4 333.7];' y( j6 H' U2 P+ n: m+ ^4 I
    x6=[354.1 294.1 361.4 333.7 426.4];7 @' O. i1 L1 X! W9 w& D) c% X
    x7=[294.1 361.4 333.7 426.4 434.4];% n( H1 ]- ~. ]$ W9 I" T  A' |
    x8=[361.4 333.7 426.4 434.4 449.9];
    . A  |0 z% O, h8 t; s( v* _" Ix9=[333.7 426.4 434.4 449.9 431.9];
    : N' M" x$ A8 T# E7 L
    ! ?' U  R, d" I. {4 g4 \P=[x1;x2;x3;x4;x5;x6;x7;x8;x9]';8 q# R+ Y0 H) o
    %输出数据--以一列作为一个输出数据
    0 A9 j3 \- i2 W8 O; Fy1=[354.1 294.1 361.4 333.7 426.4];
    7 Z5 X0 j! D  uy2=[294.1 361.4 333.7 426.4 434.4];6 q1 ?3 b2 a4 i( g! p# ]- z8 |* k
    y3=[361.4 333.7 426.4 434.4 449.9];
    1 Y5 L6 {2 Y: D' H5 g% A6 gy4=[333.7 426.4 434.4 449.9 431.9];
    , c0 z5 n" E. my5=[426.4 434.4 449.9 431.9 454.0];4 [, ^4 E2 j' c# X
    y6=[434.4 449.9 431.9 454.0 655.6];
    ' M" u  ]& L9 ]# H( o/ r. Ny7=[449.9 431.9 454.0 655.6 907.0];
    ' \" ]2 z0 r/ ]& Z0 w7 uy8=[431.9 454.0 655.6 907.0 1112.5];
    7 j; H+ u( [7 G# t9 ]8 _. ]y9=[454.0 655.6 907.0 1112.5 1401.1];
    - f% P  a, w# L2 B
    ; G2 [) I& U8 U2 VT=[y1;y2;y3;y4;y5;y6;y7;y8;y9]';
    " _0 g" `- f" @
    8 }+ z3 L! C. n! C% v%归一化" m% J8 @4 F' g+ R4 P
    % [P,minp,maxp,T,mint,maxt] = premnmx(P,T);
    7 u7 l# p, z1 B  E- r%建立网络, o  d4 q0 N# u9 v. ~, @* b: I
    %其中[10,3]代表有一个隐含层,里面有10个神经元;“3”代表有三个输出数据) o: O6 ?. ~& M4 d! o7 ~, k
    %{'tansig','purelin'}与[10,3]对应,意思为隐含层 与 输出层% c9 r% R# m% C; _/ h  M' B
    %'traingdm' 表示调整权重,缩小误差的数学函数
    6 [( V/ [4 t' l$ G/ B, E, U%↓创建一个新的前向神经网络  
    ( r- U3 P$ A$ F" c  O" Q3 k6 j& Nnet = newff(minmax(P),[6,5],{'tansig','purelin'},'traingdm')
    ' \6 y- a9 M% B$ ]; @% W
    / [8 [4 O* s7 ~%  当前输入层权值和阈值 ( ~1 C( Y3 _2 W+ A
    inputWeights = net.IW(1,1)
    $ Y+ W8 t, f/ Iinputbias = net.b(1)
    1 o0 F. s) C1 ?
    $ B5 y3 g- J. o" w9 U- t%  当前网络层权值和阈值
    ( j0 P; k  V4 [' l6 KlayerWeights = net.LW(2,1)
    $ O% o3 Y5 G" I% N$ O% @layerbias = net.b(2)
    ' O6 c+ ?7 R* A6 g+ r2 D8 M( k% u7 g, ]
    %  设置训练参数, a( c. e3 U6 R" K- o6 g' {2 k
    net.trainParam.show = 50;
    ) ]. Z) ]8 V: ynet.trainParam.lr = 0.05;
    ! U  h9 I: Y" k; p: v* k9 fnet.trainParam.mc = 0.9;" B6 [" E- L  x
    net.trainParam.epochs = 10000;  %每计算10000次出一次结果* z1 k% `" R9 g
    net.trainParam.goal = 1e-6;     %期望达到的误差(认为是合适的误差)
    " c6 g8 E# L$ R* ]$ f/ M
    $ o/ ^) z' [3 O0 Q) D8 J8 p' F%  调用 TRAINGDM 算法训练 BP 网络( @. n# e! |' K: m4 \3 l- b
    [net,tr] = train(net,P,T);      9 t, g( x1 |( u  v0 x1 J

    & d  X* Q3 j! ?  r0 s  P+ x%  对 BP 网络进行仿真
    7 m. t( [6 b4 eA = sim(net,P);                 %A为输出结果% Q. f5 L, {0 @

    : X6 L, ]) P6 [  w# {+ _%反归一化) Q( R, L( U( F% y6 G# c
    %  A = postmnmx(A,mint,maxt);
    ( e# l& Z  ^. r4 }7 C& F, t/ s  e, N+ h' C& h
    %  计算仿真误差  
    : Z9 c% ]1 ^# h! mE = T-A;                        %原来的输出 - 训练输出 = 误差. C  P1 i! t  a9 z
    MSE = mse(E)                    %输出误差4 o# S5 H7 @7 I/ E7 q) J4 d
    / C  _. p) s' r
    %下面是输入数据,测试结果
    4 Q- S3 j$ i/ }( T; ?x=[454.0 655.6 907.0 1112.5 1401.1]';
    % q. L' o) n6 EY = sim(net,x)
    2 H7 R3 G" {/ x* g( q. m
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    magic2728 实名认证    中国数模人才认证   

    61

    主题

    478

    听众

    4851

    积分

    升级  95.03%

  • 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-9-11 05:19 , Processed in 0.723233 second(s), 72 queries .

    回顶部