Python用LSTM长短期记忆神经网络对不稳定降雨量时间序列进行预测分析
原文链接:http://tecdat.cn/?p=23544
下面是一个关于如何使用长短期记忆网络(LSTM)来拟合一个不平稳的时间序列的例子。
每年的降雨量数据可能是相当不平稳的。与温度不同,温度通常在四季中表现出明显的趋势,而雨量作为一个时间序列可能是相当不平稳的。夏季的降雨量与冬季的降雨量一样多是很常见的。
下面是某地区2020年11月降雨量的图解。
作为一个连续的神经网络,LSTM模型可以证明在解释时间序列的波动性方面有优势。
使用Ljung-Box检验,小于0.05的p值表明这个时间序列中的残差表现出随机模式,表明有明显的波动性。
>>> sm.stats.acorr_ljungbox(res.resid, lags=\[10\])
Ljung-Box检验
Dickey-Fuller 检验
数据操作和模型配置
该数据集由722个月的降雨量数据组成。
选择712个数据点用于训练和验证,即用于建立LSTM模型。然后,过去10个月的数据被用来作为测试数据,与LSTM模型的预测结果进行比较。
下面是数据集的一个片段。
然后形成一个数据集矩阵,将时间序列与过去的数值进行回归。
# 形成数据集矩阵for i in range(len(df)-previous-1):a = df\[i:(i+previous), 0\]dataX.append(a)dataY.append(df\[i + previous, 0\])
然后用MinMaxScaler对数据进行标准化处理。
将前一个参数设置为120,训练和验证数据集就建立起来了。作为参考,previous = 120说明模型使用从t - 120到t - 1的过去值来预测时间t的雨量值。
前一个参数的选择要经过试验,但选择120个时间段是为了确保识别到时间序列的波动性或极端值。
# 训练和验证数据的划分
train_size = int(len(df) * 0.8)
val\_size = len(df) - train\_size
train, val = df\[0:train\_size,:\], df\[train\_size:len(df),:\]# 前期的数量
previous = 120
然后,输入被转换为样本、时间步骤、特征的格式。
# 转换输入为\[样本、时间步骤、特征\]。
np.reshape(X_train, (shape\[0\], 1, shape\[1\]))
模型训练和预测
该模型在100个历时中进行训练,并指定了712个批次的大小(等于训练和验证集中的数据点数量)。
# 生成LSTM网络
model = tf.keras.Sequential()
# 列出历史中的所有数据
print(history.history.keys())
# 总结准确度变化
plt.plot(history.history\['loss'\])
下面是训练集与验证集的模型损失的关系图。
预测与实际降雨量的关系图也被生成。
点击标题查阅往期内容
在Python中使用LSTM和PyTorch进行时间序列预测
左右滑动查看更多
01
02
03
04
# 绘制所有预测图
plt.plot(valpredPlot)
预测结果在平均方向准确性(MDA)、平均平方根误差(RMSE)和平均预测误差(MFE)的基础上与验证集进行比较。
mda(Y_val, predictions)0.9090909090909091
>>> mse = mean\_squared\_error(Y_val, predictions)
>>> rmse = sqrt(mse)
>>> forecast_error
>>> mean\_forecast\_error = np.mean(forecast_error)
MDA: 0.909
RMSE: 48.5
MFE: -1.77
针对测试数据进行预测
虽然验证集的结果相当可观,但只有将模型预测与测试(或未见过的)数据相比较,我们才能对LSTM模型的预测能力有合理的信心。
如前所述,过去10个月的降雨数据被用作测试集。然后,LSTM模型被用来预测未来10个月的情况,然后将预测结果与实际值进行比较。
至t-120的先前值被用来预测时间t的值。
# 测试(未见过的)预测
np.array(\[tseries.iloctseries.iloc,t
获得的结果如下
MDA: 0.8
RMSE: 49.57
MFE: -6.94
过去10个月的平均降雨量为148.93毫米,预测精度显示出与验证集相似的性能,而且相对于整个测试集计算的平均降雨量而言,误差很低。
结论
在这个例子中,你已经看到:
如何准备用于LSTM模型的数据
构建一个LSTM模型
如何测试LSTM的预测准确性
使用LSTM对不稳定的时间序列进行建模的优势
本文摘选《Python用LSTM长短期记忆神经网络对不稳定降雨量时间序列进行预测分析》,点击“阅读原文”获取全文完整资料。
点击标题查阅往期内容
深度学习实现自编码器Autoencoder神经网络异常检测心电图ECG时间序列
spss modeler用决策树神经网络预测ST的股票
Python中TensorFlow的长短期记忆神经网络(LSTM)、指数移动平均法预测股票市场和可视化
RNN循环神经网络 、LSTM长短期记忆网络实现时间序列长期利率预测
结合新冠疫情COVID-19股票价格预测:ARIMA,KNN和神经网络时间序列分析
深度学习:Keras使用神经网络进行简单文本分类分析新闻组数据
用PyTorch机器学习神经网络分类预测银行客户流失模型
PYTHON用LSTM长短期记忆神经网络的参数优化方法预测时间序列洗发水销售数据
Python用Keras神经网络序列模型回归拟合预测、准确度检查和结果可视化
R语言深度学习卷积神经网络 (CNN)对 CIFAR 图像进行分类:训练与结果评估可视化
深度学习:Keras使用神经网络进行简单文本分类分析新闻组数据
Python用LSTM长短期记忆神经网络对不稳定降雨量时间序列进行预测分析
R语言深度学习Keras循环神经网络(RNN)模型预测多输出变量时间序列
R语言KERAS用RNN、双向RNNS递归神经网络、LSTM分析预测温度时间序列、 IMDB电影评分情感
Python用Keras神经网络序列模型回归拟合预测、准确度检查和结果可视化
Python用LSTM长短期记忆神经网络对不稳定降雨量时间序列进行预测分析
R语言中的神经网络预测时间序列:多层感知器(MLP)和极限学习机(ELM)数据分析报告
R语言深度学习:用keras神经网络回归模型预测时间序列数据
Matlab用深度学习长短期记忆(LSTM)神经网络对文本数据进行分类
R语言KERAS深度学习CNN卷积神经网络分类识别手写数字图像数据(MNIST)
MATLAB中用BP神经网络预测人体脂肪百分比数据
Python中用PyTorch机器学习神经网络分类预测银行客户流失模型
R语言实现CNN(卷积神经网络)模型进行回归数据分析
SAS使用鸢尾花(iris)数据集训练人工神经网络(ANN)模型
【视频】R语言实现CNN(卷积神经网络)模型进行回归数据分析
Python使用神经网络进行简单文本分类
R语言用神经网络改进Nelson-Siegel模型拟合收益率曲线分析
R语言基于递归神经网络RNN的温度时间序列预测
R语言神经网络模型预测车辆数量时间序列
R语言中的BP神经网络模型分析学生成绩
matlab使用长短期记忆(LSTM)神经网络对序列数据进行分类
R语言实现拟合神经网络预测和结果可视化
用R语言实现神经网络预测股票实例
使用PYTHON中KERAS的LSTM递归神经网络进行时间序列预测
python用于NLP的seq2seq模型实例:用Keras实现神经网络机器翻译
用于NLP的Python:使用Keras的多标签文本LSTM神经网络分类
欲获取全文文件,请点击左下角“阅读原文”。
欲获取全文文件,请点击左下角“阅读原文”。
Python用LSTM长短期记忆神经网络对不稳定降雨量时间序列进行预测分析相关推荐
- 【视频】Python用LSTM长短期记忆神经网络对不稳定降雨量时间序列进行预测分析|数据分享...
全文下载链接:http://tecdat.cn/?p=23544 在本文中,长短期记忆网络--通常称为"LSTM"--是一种特殊的RNN递归神经网络,能够学习长期依赖关系(点击文末 ...
- PYTHON用LSTM长短期记忆神经网络的参数优化方法预测时间序列洗发水销售数据
最近我们被客户要求撰写关于LSTM的研究报告,包括一些图形和统计输出. 配置神经网络很困难,因为没有关于如何去做的好的理论. 您必须系统地从动态和客观结果的角度探索不同的参数配置,以尝试了解给定预测建 ...
- 小白学深度之LSTM长短期记忆神经网络——深度AI科普团队
前言 不知道RNN的一定要先看看RNN的原理 在RNN中我们说了RNN的不足,也就是对较长的时间,或者较长的string,很多时候前面的数据对后面的数据影响就很小甚至没影响了,这是我们就要加强前面的数 ...
- 时序预测 | MATLAB实现基于EMD-LSTM时间序列预测(EMD分解结合LSTM长短期记忆神经网络)
时序预测 | MATLAB实现基于EMD-LSTM时间序列预测(EMD分解结合LSTM长短期记忆神经网络) 目录 时序预测 | MATLAB实现基于EMD-LSTM时间序列预测(EMD分解结合LSTM ...
- 时序预测 | MATLAB实现LSTM长短期记忆神经网络时间序列预测
目录 时序预测 | MATLAB实现LSTM长短期记忆神经网络时间序列预测 预测效果 程序设计 案例1 案例2 参考资料 时序预测 | MATLAB实现LSTM长短期记忆神经网络时间序列预测 预测效果 ...
- 时序预测 | MATLAB实现基于Adam算法优化LSTM长短期记忆神经网络时间序列预测
时序预测 | MATLAB实现基于Adam算法优化LSTM长短期记忆神经网络时间序列预测 目录 时序预测 | MATLAB实现基于Adam算法优化LSTM长短期记忆神经网络时间序列预测 效果一览 基本 ...
- Python中TensorFlow长短期记忆神经网络LSTM、指数移动平均法预测股票市场时间序列和可视化
最近我们被客户要求撰写关于LSTM的研究报告,包括一些图形和统计输出. 本文探索Python中的长短期记忆(LSTM)网络,以及如何使用它们来进行股市预测. 相关视频:LSTM神经网络架构和工作原理及 ...
- LSTM 长短期记忆神经网络及股票预测实现
一.介绍 我们知道RNN(循环神经网络)可以通过时间序列预测输出,LSTM也具有同样的功能,那么为什么需要LSTM呢? 由于RNN在参数更新过程中参数矩阵更新可能会造成梯度消失的问题,这才演化出了具有 ...
- RNN循环神经网络 、LSTM长短期记忆网络实现时间序列长期利率预测
全文链接:http://tecdat.cn/?p=25133 2017 年年中,R 推出了 Keras 包 _,_这是一个在 Tensorflow 之上运行的综合库,具有 CPU 和 GPU 功能(点 ...
最新文章
- android studio 图片的命名规则
- java 调用 v8_学习笔记:使用Android V8 (J2V8)JavaScript引擎
- Activiti与Spring的整合
- override,final的使用,两者都是针对虚函数,也就是说要有virtual关键字
- foreach_break 面试记录
- 一站式机器学习平台建设实践
- ethtool用法 linux_Linux命令之Ethtool用法详解
- 11.8 Ext.util.Event.fire(): Attempting to fire “click“ event on destroyed 问题分析与解决
- Zabbix agent批量自动部署
- Kubernetes1.91(K8s)安装部署过程(六)--node节点部署
- C语言贪吃蛇小游戏,贪吃蛇C语言代码实现大全
- 哈夫曼编码原理分析及代码实现(有注释)
- windows 7 64位 刷J-Link固件 无法识别成串口时 安装 sam-ba at91 usb to serial converter 驱动不成功的解决办法
- Redis数据丢失问题
- 「魔窗」问题终于解决了
- np.pad()用于卷积网络中对图片进行填充
- 基于原子势函数及人工蜂群算法进行形状匹配优化(Matlab代码实现)
- linux 机器开机自动运行命令的方法
- 《introduction to information retrieval》信息检索学习笔记1 布尔检索
- 《重说中国近代史》—张鸣—(5)古老命题新解(二)