关于算法:Python用LSTM长短期记忆神经网络对不稳定降雨量时间序列进行预测分析

56次阅读

共计 2233 个字符,预计需要花费 6 分钟才能阅读完成。

原文链接: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'\])

上面是训练集与验证集的模型损失的关系图。

预测与理论降雨量的关系图也被生成。

# 绘制所有预测图
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 对不稳固的工夫序列进行建模的劣势

最受欢迎的见解

1. 用于 NLP 的 Python:应用 Keras 的多标签文本 LSTM 神经网络分类

2.Python 中利用长短期记忆模型 LSTM 进行工夫序列预测剖析 – 预测电力耗费数据

3.python 在 Keras 中应用 LSTM 解决序列问题

4.Python 中用 PyTorch 机器学习分类预测银行客户散失模型

5.R 语言多元 Copula GARCH 模型工夫序列预测

6. 在 r 语言中应用 GAM(狭义相加模型)进行电力负荷工夫序列剖析

7.R 语言中 ARMA,ARIMA(Box-Jenkins),SARIMA 和 ARIMAX 模型用于预测工夫序列数

8.R 语言预计时变 VAR 模型工夫序列的实证钻研剖析案例

9. 用狭义加性模型 GAM 进行工夫序列剖析

正文完
 0