原文链接: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\_sizetrain, 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进行工夫序列剖析