如何将时间序列转换为Python中的监督学习问题(1)

深度学习等机器学习方法可用于时间序列预测。

在可以使用机器学习之前,必须将时间序列预测问题重新定义为监督学习问题。从序列到输入和输出序列对。

在本教程中,您将了解如何将单变量和多变量时间序列预测问题转换为监督学习问题,以便与机器学习算法一起使用。

完成本教程后,您将了解:

  • 如何开发将时间序列数据集转换为监督学习数据集的函数。
  • 如何转换用于机器学习的单变量时间序列数据。
  • 如何转换多变量时间序列数据用于机器学习。

让我们开始吧。


我们可以通过在顶部插入一个新行将所有观察结果向下移动一步。因为新行没有数据,我们可以使用NaN来表示“无数据”。


shift函数可以为我们执行此操作,我们可以在原始系列旁边插入此移位列。

在可以使用机器学习之前,必须将时间序列预测问题重新定义为监督学习问题。从序列到输入和输出序列对。

在本教程中,您将了解如何将单变量和多变量时间序列预测问题转换为监督学习问题,以便与机器学习算法一起使用。

完成本教程后,您将了解:

  • 如何开发将时间序列数据集转换为监督学习数据集的函数。
  • 如何转换用于机器学习的单变量时间序列数据。
  • 如何转换多变量时间序列数据用于机器学习。

让我们开始吧。

时间序列与监督学习

在我们开始之前,让我们花一点时间来更好地理解时间序列和监督学习数据的形式。

时间序列是按时间索引排序的数字序列。这可以被认为是有序值的列表或列。

例如:

0
1
2
3
4
5
6
7
8
9

监督学习问题由输入模式(X)和输出模式(y)组成,使得算法可以学习如何从输入模式预测输出模式。

例如:

X,y
1,2
2,3
3,4
4,5
5,6
6,7
7,8
8,9

Pandas shift()函数

帮助将时间序列数据转换为监督学习问题的关键功能是Pandas shift()函数。

给定一个DataFrame,shift()函数可用于创建向前推送的列的副本(添加到前面的NaN值行)或向后拉(添加到末尾的NaN值行)。

这是创建滞后观察列以及监督学习格式的时间序列数据集的预测观察列所需的行为。

让我们看一下移位函数的一些例子。

我们可以将模拟时间序列数据集定义为10个数字的序列,在本例中是DataFrame中的单个列,如下所示:

from pandas import DataFrame
df = DataFrame()
df['t'] = [x for x in range(10)]
print(df)

运行该示例使用每个观察的行索引打印时间序列数据。

我们可以通过在顶部插入一个新行将所有观察结果向下移动一步。因为新行没有数据,我们可以使用NaN来表示“无数据”。

shift函数可以为我们执行此操作,我们可以在原始系列旁边插入此移位列。

from pandas import DataFrame
df = DataFrame()
df['t'] = [x for x in range(10)]
df['t-1'] = df['t'].shift(1)
print(df)

运行该示例为我们提供了数据集中的两列。第一个是原始观察和一个新的移动列。

我们可以看到,将系列向前移动一个步骤给了我们一个原始的监督学习问题,尽管X和y的顺序错误。忽略行标签列。由于NaN值,必须丢弃第一行。第二行显示第二列(输入或X)中的输入值0.0 和第一列(输出或y)中的值1 。

我们可以看到,如果我们可以使用2,3和更多的移位重复此过程,我们如何创建可用于预测输出值(y)的长输入序列(X)。

移位运算符也可以接受负整数值。这具有通过在末尾插入新行来提升观察结果的效果。以下是一个例子:

from pandas import DataFrame
df = DataFrame()
df['t'] = [x for x in range(10)]
df['t+1'] = df['t'].shift(-1)
print(df)

运行该示例显示一个新列,其中NaN值为最后一个值。

我们可以看到预测列可以作为输入(X),第二个作为输出值(y)。即输入值0可用于预测输出值1。

从技术上讲,在时间序列预测术语中,当前时间(t)和未来时间(t + 1,t + n)是预测时间,过去观察(t-1,tn)用于进行预测。

我们可以看到正向和负向移位如何用于从具有监督学习问题的输入和输出模式序列的时间序列创建新的DataFrame。

这不仅允许经典的X - > y预测,而且还允许X - > Y,其中输入和输出都可以是序列。

此外,移位功能也适用于所谓的多变量时间序列问题。在这里,我们有多个(例如温度和压力),而不是对时间序列进行一组观察。时间序列中的所有变量都可以向前或向后移动以创建多变量输入和输出序列。我们将在本教程的后面部分对此进行探讨。

...............................接下来请看如何将时间序列转换为Python中的监督学习问题(2)..........................................

注:本文如若有错误或者涉及版权问题或原文链接错误,请指正,必会马上修改。

本文主要翻译自https://machinelearningmastery.com/convert-time-series-supervised-learning-problem-python/

猜你喜欢

转载自blog.csdn.net/qq_27280237/article/details/80980368
今日推荐