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