lstm训练时间序列_时间序列和深度学习(N的第3部分):完成LSTM训练和评估的数据准备...

lstm训练时间序列

在本系列的第3部分中,我将完成在数据准备过程的第2部分中开始的描述,以在时间序列预测中训练和评估LSTM模型。 使用的数据集与第1部分和第2部分相同。与本系列所有文章相同,我指的是Python 3。

在第2部分中,我们学习了如何将时间序列转换为监督模型。 这还不足以提供我们的LSTM模型:还需要另外两个转换。 首先要做的是变换时间序列数据以使其稳定。 这些帖子使用的输入时间序列显示的值取决于时间。 查看其在第1部分中的绘图,我们可以看到直到2006年1月的上升趋势,然后到2010年2月的下降趋势,最后是迄今为止的第二个上升趋势。 将这些数据转换为平稳数据可以使工作变得更轻松:我们可以在训练之前从观测值中删除趋势,最后将其添加回预测中,以使预测返回到原始比例。 可以通过对数据进行差分来消除趋势:我们从当前值(在时间t )减去在时间t-1的值。 为此,pandas DataFrame提供了一个函数diff() 。 我们需要实现两个函数,一个函数返回时差序列:

def difference(timeseries, interval=1):
diff_list = list()
for idx in range(interval, len(timeseries)):

另一项是在进行预测之前将过程反转:

def invert_difference(historical, inverted_scale_ts, interval=1):
return inverted_scale_ts + historical[-interval]

最后要做的是将输入时间序列观测值转换为特定比例。 我们将使用的神经网络模型是LSTM。 LSTM的默认激活函数是双曲正切,其输出值在-1和1之间,因此,本示例中使用的时间序列的最佳范围在同一范围内。 最小和最大缩放系数需要在训练数据集上计算,然后用于缩放测试数据集。 scikit-learn软件包为此提供了一个特定的类,
MinMaxScaler 。 我们需要实现两个函数,一个用于计算缩放系数:

from sklearn.preprocessing import MinMaxScaler

def scale_data_set(train_data, test_data):
min_max_scaler = MinMaxScaler(feature_range=(-1, 1))
min_max_scaler = min_max_scaler.fit(train_data)

scaled_test_data

第二个是将预测值的缩放比例反转:

def invert_scale(min_max_scaler, scaled_array, value):
row = [elem for elem in scaled_array] + [value]
array = numpy.array(row)

现在我们可以放在一起了。 我们首先使输入数据固定:

raw_values = series.values
diff_values = difference(raw_values, 1)

然后将数据转换为类似于监督学习案例的问题:

supervised = tsToSupervised(diff_values, 1)

最后将训练数据(1992年至2010年)和测试数据(2011年至今)进行拆分:

train, test = supervised[0:-98], supervised[-98:]

并转换训练数据的规模:

scaler, train_scaled, test_scaled = scale(train, test)

在这一阶段,我们现在可以构建和训练我们的LSTM。 但这将是本系列下一篇文章的核心主题。

完整的示例将在本系列第一部分的结尾作为Jupyter笔记本发布。

翻译自: https://www.javacodegeeks.com/2019/06/time-series-deep-learning-part-3-of-n-finalizing-the-data-preparation-for-training-and-evaluation-of-a-lstm.html

lstm训练时间序列

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值