【数据预测】综合比对线性拟合与BP算法预测结果

简介: 【数据预测】综合比对线性拟合与BP算法预测结果

一、数据分析


  首先分析面源监测数据,一共有30个降雨日的数据,其中每个降雨日内都有降雨量,以及总氮、氨氮、总磷、COD这四种污染物的监测数据,且降雨数据与污染物数据数量级相差较大。进而根据污染物与降雨的关系,我认为在模拟污染物载荷时,应当考虑构建成降雨量作为自变量,其他四种污染物分别作为因变量的四个单变量函数。


  然后对数据进行标准化处理。但其实此处函数或者神经网络均为单变量,所以标准化的意义并不大。


image.png

二、模型构建


(一)线性拟合


  接着在Excel中对数据进行简单的作图分析,可以发现如下图所示,四组数据都是比较符合于线性分布。所以首先考虑采用线性模型进行拟合,拟合结果如下图所示。可以看到线性模型并不能够很好地拟合降雨量和四种污染载荷之间的关系,解释程度较高且拟合效果较差,因此本文将不采用线性拟合的方式!


image.png


(二)神经网络模拟


  由线性拟合的经验可知,降雨量与四种污染载荷之间的关系并不复杂,因而可以考虑采用较为简单的神经网络进行模拟,本文即采用BP神经网络进行拟合。


  考虑到BP神经网络存在陷入局部极小值的可能性,对拟合过程中易产生不确定性波动,我们可对BP神经网络进行改进:针对输出结果误差进行判定,对符合要求的拟合输出,不符合则淘汰掉,使输出的结果在一定较小范围的误差内。


  在设置BP神经网络的时候,我们对隐含层设置为10层,函数分别为:logsig、purelin、traingdx、learngdm允许训练的最大步数设置为5000,训练目标的最小误差设置为0.00000001,学习率设置为0.0000001。


  本文中采用R2作为评价指标,把R2在0.998与1.002之间的训练网络进行存储(便于下次调用),这里的R2计算公式:


SSR = SUM((真值 - 真值的均值)^2)


SST = SUM((预测值 - 预测值的均值)^2)


R2 = SSR/SST


image.png


三.使用降水量为自变量


3.1 以降水量为自变量模拟总氨量与真实总氨量进行改进BP网络实验图


image.png


3.2以降水量为自变量模拟氨氮量与真实氨氮量进行改进BP网络实验图

image.png


3.3以降水量为自变量模拟总磷量与真实总磷量进行改进BP网络实验图

image.png


3.4以降水量为自变量模拟COD值与真实COD值进行改进BP网络实验图

image.png


总结


  综合线性拟合模型和神经网络模拟的模拟效果来看,使用神经网络模型完全能胜任数据拟合任务,尽管神经网络的输出存在不稳定性,但是我们可以对神经网络输出部分进行限制从而达到在一定很小的误差内波动,从而达到理想值的要求。因此在本文中我们选择使用改进的神经网络进行预测是可以达到实验目的。



附录


源数据:image.png


结果对比数据:image.png

相关文章
|
20天前
|
存储 监控 NoSQL
Redis处理大量数据主要依赖于其内存存储结构、高效的数据结构和算法,以及一系列的优化策略
【5月更文挑战第15天】Redis处理大量数据依赖内存存储、高效数据结构和优化策略。选择合适的数据结构、利用批量操作减少网络开销、控制批量大小、使用Redis Cluster进行分布式存储、优化内存使用及监控调优是关键。通过这些方法,Redis能有效处理大量数据并保持高性能。
39 0
|
6天前
|
算法 NoSQL Python
开山之作!Python数据与算法分析手册,登顶GitHub!
若把编写代码比作行军打仗,那么要想称霸沙场,不能仅靠手中的利刃,还需深谙兵法。 Python是一把利刃,数据结构与算法则是兵法。只有熟读兵法,才能使利刃所向披靡。只有洞彻数据结构与算法,才能真正精通Python
|
7天前
|
机器学习/深度学习 算法 数据可视化
基于BP神经网络的32QAM解调算法matlab性能仿真
```markdown - 32QAM解调算法运用BP神经网络在matlab2022a中实现,适应复杂通信环境。 - 网络结构含输入、隐藏和输出层,利用梯度下降法优化,以交叉熵损失最小化为目标训练。 - 训练后,解调通过前向传播完成,提高在噪声和干扰中的数据恢复能力。 ``` 请注意,由于字符限制,部分详细信息(如具体图示和详细步骤)未能在摘要中包含。
|
11天前
|
机器学习/深度学习 算法
m基于GA-GRU遗传优化门控循环单元网络的电力负荷数据预测算法matlab仿真
在MATLAB 2022a中,一个基于遗传算法优化的GRU网络展示显著优化效果。优化前后的电力负荷预测图表显示了改进的预测准确性和效率。GRU,作为RNN的一种形式,解决了长期依赖问题,而遗传算法用于优化其超参数,如学习率和隐藏层单元数。核心MATLAB程序执行超过30分钟,通过迭代和适应度评估寻找最佳超参数,最终构建优化的GRU模型进行负荷预测,结果显示预测误差和模型性能的提升。
29 4
|
11天前
|
机器学习/深度学习 算法 数据可视化
基于BP神经网络的16QAM解调算法matlab性能仿真
这是一个关于使用MATLAB2022a实现的16QAM解调算法的摘要。该算法基于BP神经网络,利用其非线性映射和学习能力从复数信号中估计16QAM符号,具有良好的抗噪性能。算法包括训练和测试两个阶段,通过反向传播调整网络参数以减小输出误差。核心程序涉及数据加载、可视化以及神经网络训练,评估指标为误码率(BER)和符号错误率(SER)。代码中还包含了星座图的绘制和训练曲线的展示。
|
13天前
|
机器学习/深度学习 算法
基于BP神经网络的QPSK解调算法matlab性能仿真
该文介绍了使用MATLAB2022a实现的QPSK信号BP神经网络解调算法。QPSK调制信号在复杂信道环境下受到干扰,BP网络能适应性地补偿失真,降低误码率。核心程序涉及数据分割、网络训练及性能评估,最终通过星座图和误码率曲线展示结果。
|
17天前
|
算法
m基于BP译码算法的LDPC编译码matlab误码率仿真,对比不同的码长
MATLAB 2022a仿真实现了LDPC码的性能分析,展示了不同码长对纠错能力的影响。短码长LDPC码收敛快但纠错能力有限,长码长则提供更强纠错能力但易陷入局部最优。核心代码通过循环进行误码率仿真,根据EsN0计算误比特率,并保存不同码长(12-768)的结果数据。
43 9
m基于BP译码算法的LDPC编译码matlab误码率仿真,对比不同的码长
|
20天前
|
机器学习/深度学习 算法 数据挖掘
【机器学习】聚类算法中,如何判断数据是否被“充分”地聚类,以便算法产生有意义的结果?
【5月更文挑战第14天】【机器学习】聚类算法中,如何判断数据是否被“充分”地聚类,以便算法产生有意义的结果?
|
20天前
|
机器学习/深度学习 运维 算法
【机器学习】可以利用K-means算法找到数据中的离群值吗?
【5月更文挑战第14天】【机器学习】可以利用K-means算法找到数据中的离群值吗?
|
20天前
|
数据采集 机器学习/深度学习 人工智能
【机器学习】在使用K-means算法之前,如何预处理数据?
【5月更文挑战第12天】【机器学习】在使用K-means算法之前,如何预处理数据?