时间序列和深度学习(N的第2部分):用于LSTM训练和评估的数据准备

在本系列的第二篇文章中,我们将学习如何准备用于训练和评估LSTM神经网络以进行时间序列预测的数据。 与本系列的其他任何文章一样,我所指的是Python3。使用的数据集与第1部分相同。
LSTM (长期记忆)神经网络是Sepp HochreiterJurgen Schmiduber于1997年引入的RNN (递归神经网络)的一种特殊技术,用于解决影响RNN 的消失梯度问题 。 LSTM用于语言翻译,文本生成,图像字幕,音乐生成和时间序列预测的实际应用中。 您可以在我的书中找到有关LSTM的更多信息,或者等待本系列的下一篇文章。 这篇文章主要关注在使用数据集进行Keras库的时间序列预测问题中的LSTM训练和评估之前,数据准备的最佳实践之一。 让我们先加载数据集:

from pandas import read_csv
from pandas import datetime

def parser(x):
    return datetime.strptime(x, '%Y-%m-%d')
features = ['date', 'value']
series = read_csv('./advance-retail-sales-building-materials-garden-equipment-and-supplies-dealers.csv', usecols=features, header=0, parse_dates=[1], index_col=1, squeeze=True, date_parser=parser)

要做的第一步是改变时间序列,以使预测可能成为监督学习问题而成为威胁。 在监督学习中,通常将数据集分为输入(包含自变量)和输出(包含目标变量)。 我们将使用前一个时间步长的观测值(标识为t-1 )作为输入,并使用当前时间步长的观测值(标识为t )作为输出。 无需从头开始实现此转换逻辑,因为我们可以使用可用于pandas DataFrames的shift函数。 输入变量可以通过将原始时间序列的所有值下移一位来构建。 输出是原始时间序列。 最后,我们将两个系列连接到一个DataFrame中。 因为我们需要将此过程应用于原始数据集的值,所以最好为其实现一个函数:

from pandas import DataFrame
from pandas import concat

def tsToSupervised(series, lag=1):
    seriesDf = DataFrame(series)
    columns = [seriesDf.shift(idx) for idx in range(1, lag+1)]
    columns.append(seriesDf)
    seriesDf = concat(columns, axis=1)
    seriesDf.fillna(0, inplace=True)
    return seriesDf

supervisedDf = tsToSupervised(series, 1)

以下是受监管的DataFrame外观的示例:

supervisedDf.head()

数据集现在准备好用于训练和验证网络了吗? 还没。 其他转换需要完成。 但这将是下一篇文章的主题。
完整的示例将在本系列第一部分末作为Jupyter笔记本发布。

翻译自: https://www.javacodegeeks.com/2019/06/series-deep-learning-data-preparation-training-evaluation-lstm.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值