24小时热门版块排行榜    

查看: 1353  |  回复: 3

kathy2836

铁杆木虫 (小有名气)

[求助] BP神经网络进行水质评价遇到问题 已有1人参与

用BP神经网络进行水质评价,选取6个水质因子进行评价,通过rand函数在水质标准各等级标准值区间分别随机生成400个数值。因为标准中添加了劣五类水质,所以共随机生成2400组数据,其中每个等级区间内选取300个用作训练样本,其余100个为测试样本。输出目标格式为:
T=[1 0 0 0 0 0;0 1 0 0 0 0;0 0 1 0 0 0;0 0 0 1 0 0;0 0 0 0 1 0;0 0 0 0 0 1]’。
输入神经元为6个,输出神经元为6个。通过试错法得到隐含层神经元数量为10的时候误差最小。训练网络的时候也能达到设定的目标误差,但是再用水质标准值归一化后通过训练好的网络得到的输出却和预计输出差很远。代码如下,请高手指点一下问题出在哪里,十分感谢!

****************************************************************************************************
% 6个因子的水质标准,包含劣五类水质
P=[7.5 15 2 0.015 0.2 0.01;6 15 4 0.5 0.5 0.025;5 20 6 1 1 0.05;
    3 30 10 1.5 1.5 0.1;2 40 15 2 2 0.2;0 200 25 8 40 1]';
%随机生成训练样本
P1=[(15-P(1,1))*rand(1,400)+P(1,1);P(2,1)*rand(1,400);P(3,1)*rand(1,400);
    P(4,1)*rand(1,400);P(5,1)*rand(1,400);P(6,1)*rand(1,400)];
P2=[(P(1,1)-P(1,2))*rand(1,400)+P(1,2);P(2,2)*rand(1,400);(P(3,2)-P(3,1))*rand(1,400)+P(3,1);
    (P(4,2)-P(4,1))*rand(1,400)+P(4,1);(P(5,2)-P(5,1))*rand(1,400)+P(5,1);(P(6,2)-P(6,1))*rand(1,400)+P(6,1)];
P3=[(P(1,2)-P(1,3))*rand(1,400)+P(1,3);(P(2,3)-P(2,2))*rand(1,400)+P(2,2);(P(3,3)-P(3,2))*rand(1,400)+P(3,2);
    (P(4,3)-P(4,2))*rand(1,400)+P(4,2);(P(5,3)-P(5,2))*rand(1,400)+P(5,2);(P(6,3)-P(6,2))*rand(1,400)+P(6,2)];
P4=[(P(1,3)-P(1,4))*rand(1,400)+P(1,4);(P(2,4)-P(2,3))*rand(1,400)+P(2,3);(P(3,4)-P(3,3))*rand(1,400)+P(3,3);
    (P(4,4)-P(4,3))*rand(1,400)+P(4,3);(P(5,4)-P(5,3))*rand(1,400)+P(5,3);(P(6,4)-P(6,3))*rand(1,400)+P(6,3)];
P5=[(P(1,4)-P(1,5))*rand(1,400)+P(1,5);(P(2,5)-P(2,4))*rand(1,400)+P(2,4);(P(3,5)-P(3,4))*rand(1,400)+P(3,4);
    (P(4,5)-P(4,4))*rand(1,400)+P(4,4);(P(5,5)-P(5,4))*rand(1,400)+P(5,4);(P(6,5)-P(6,4))*rand(1,400)+P(6,4)];
P6=[(P(1,5)-P(1,6))*rand(1,400)+P(1,6);(P(2,6)-P(2,5))*rand(1,400)+P(2,5);(P(3,6)-P(3,5))*rand(1,400)+P(3,5);
    (P(4,6)-P(4,5))*rand(1,400)+P(4,5);(P(5,6)-P(5,5))*rand(1,400)+P(5,5);(P(6,6)-P(6,5))*rand(1,400)+P(6,5)];
%随机生成的样本矩阵(6*2400)
PP=[P1 P2 P3 P4 P5 P6];
%各选取300个做为训练样本
PI=[P1(:,1:300) P2(:,1:300) P3(:,1:300) P4(:,1:300) P5(:,1:300) P6(:,1:300)];
%其余100个做为测试样本
PT=[P1(:,301:400) P2(:,301:400) P3(:,301:400) P4(:,301:400) P5(:,301:400) P6(:,301:400)];

%读取目标输出矩阵文件(6*2400)
T=xlsread('C:\Users\Kathy\Desktop\ANN\T.xlsx','Sheet1');
%对应训练样本和测试样本的输出矩阵
TI=[T(:,1:300) T(:,401:700) T(:,801:1100) T(:,1201:1500) T(:,1601:1900) T(:,2001:2300)];
TTEST=[T(:,301:400) T(:,701:800) T(:,1101:1200) T(:,1501:1600) T(:,1901:2000) T(:,2301:2400)];

%将训练样本归一化至[-1,1]区间
[PN,ps]=mapminmax(PI);

%建立训练网络。这里我开始用的是tansig激活函数,但是三条线的收敛效果很差,所以改成了logsig。不知道有没有问题?是不是归一化区间为[-1,1]要对应使用tansig函数?
net6=newff(minmax(PN),TI,[10,6],{'logsig','purelin'},'trainlm');
%设定输入层权重和阈值
inputWeight6=net6.IW{1,1};
inputbias6=net6.b{1};
%设定当前层权重和阈值
layerWeight6=net6.LW{2,1};
layerbias6=net6.b{2};
% 设定训练参数
net6.trainParam.show=5;
net6.trainParam.lr=0.05;
net6.trainParam.mc=0.95;
net6.trainParam.epochs=3000;
net6.trainParam.goal=0.0001;
%对网络进行训练
net6=train(net6,PN,TI);

A6=sim(net6,PN);

E6=TI-A6;
MSE6=mse(E6);
******************************************************************************
通过以上步骤之后,得到的A6矩阵很满意,和预计输出差不多,但是当我用这个网络对水质标准值(就是上面代码中的P矩阵)归一化之后进行操作时,得到的结果却和预计输出差很多,

对30个站位的水质监测值进行同样操作,结果也是有一些站位的值异常。

请高手给予指点,问题出在哪里呢?困扰我很久了,十分感谢!
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hakuna

木虫 (知名作家)

【答案】应助回帖

★ ★ ★ ★ ★
感谢参与,应助指数 +1
kathy2836: 金币+5, 有帮助, 谢谢你! 2014-04-26 22:53:04
没看太明白,但 大致知道你做的是个分类问题。
考虑一下两个方面:
1.你的描述水质的指标是否合理?难道你的训练集不是测定的数据样本?训练集是否有代表性?
2.判断水质类别与定量预测不同,不许要过度追求寻两误差有多小,只要训练分类合理即可,过度要求小的训练误差会导致训练过度,降低网络的泛化能力。
2楼2014-02-06 20:29:51
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xl2420

银虫 (小有名气)

楼主犯了个小错误,P=[7.5 15 2 0.015 0.2 0.01;6 15 4 0.5 0.5 0.025;5 20 6 1 1 0.05;
    3 30 10 1.5 1.5 0.1;2 40 15 2 2 0.2;0 200 25 8 40 1]';中第一行第四列应该为0.15,不是0.015
xiaoling
3楼2015-07-15 17:12:14
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

伟长

新虫 (初入文坛)

楼主,你解决了吗?求助求助

发自小木虫Android客户端
4楼2018-01-28 07:25:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 kathy2836 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 面上提前没消息,有中的吗 +9 archvillain 2026-08-02 11/550 2026-08-02 15:44 by alexon
[公派出国] 售SCI一区T0P文章,我:8O.55.1.O.5.4,科目齐全,可+急 +3 cBGhfJFuNMca 2026-08-02 8/400 2026-08-02 15:01 by jHcrHMhbKCFV
[考博] 售SCI一区T0P文章,我:8.O.55.1.O54,科目全,可伽急 +3 cBGhfJFuNMca 2026-08-02 14/700 2026-08-02 14:58 by jHcrHMhbKCFV
[博后之家] 售SCI-T0P文章,我:8O.5.5.1.O.54,科目齐全,可+急 +3 cBGhfJFuNMca 2026-08-02 18/900 2026-08-02 14:52 by jHcrHMhbKCFV
[找工作] 售SCI-T0P文章,我:8O.5.5.1.O.54,科目齐全,可+急 +3 cBGhfJFuNMca 2026-08-02 12/600 2026-08-02 13:43 by jHcrHMhbKCFV
[基金申请] 面上再次挂了,太难了,躺也躺不了,倦也卷不过,小学校之殇! +17 低垂的野花 2026-07-31 23/1150 2026-08-02 13:41 by RRRKKK
[找工作] 售SCI一区文章,我:8.O.55.1.O.54,科目齐全,可伽急 +3 cBGhfJFuNMca 2026-08-02 16/800 2026-08-02 13:34 by jHcrHMhbKCFV
[博后之家] 售SCI一区文章,我:8.O.551.O.5.4,科目全,可伽急 +3 cBGhfJFuNMca 2026-08-02 14/700 2026-08-02 13:34 by jHcrHMhbKCFV
[基金申请] 2026年国自然面上资助率 +15 布布和一二 2026-07-30 21/1050 2026-08-02 10:56 by iaeyuan
[教师之家] 基础研究怎么拉横向,学校到款任务越来越多,难以完成 拉横向,都有哪些途径啊 +8 锦衣卫寒战 2026-07-28 10/500 2026-08-02 10:00 by 锦衣卫寒战
[考博] 2027年申博 50+3 射雕英雄胜 2026-07-30 3/150 2026-08-02 09:36 by lfy8008
[有机交流] 一个有机合成实验室都需要哪些设备? 50+3 kf2781974 2026-07-31 7/350 2026-08-02 07:59 by 88817753
[基金申请] 微信指数没变化,科研之友没阅读 +14 wangze12014 2026-07-28 18/900 2026-07-31 18:35 by lzchaihuo
[高分子] HXDI做水性聚氨酯乳液,是不是特别容易出渣 15+3 yuyusuv 2026-07-29 3/150 2026-07-31 09:21 by huizingga
[基金申请] 系统今天又提示维护了,估计离放榜不远了 +11 winnerche 2026-07-29 15/750 2026-07-30 23:08 by jnhyjjm
[基金申请] 你们的时间戳变了吗 +3 archvillain 2026-07-30 4/200 2026-07-30 18:53 by levinzhwen
[有机交流] 产物和副产物价值比较 30+4 小汤02 2026-07-27 5/250 2026-07-30 12:44 by czyzsu
[基金申请] 这种情况还有戏吗 +5 drbart 2026-07-27 11/550 2026-07-29 05:50 by drbart
[基金申请] 同事接到电话了,我却没有 +4 1234567wang 2026-07-27 4/200 2026-07-28 10:11 by GOODLUCKER
[基金申请] 准备明年的基金了 +5 Tide man 2026-07-27 5/250 2026-07-28 09:25 by newfuzzy1
信息提示
请填处理意见