%%capture
!pip install datasetsforecast数据要求
数据集输入要求
在这个示例中,我们将讨论core.NeuralForecast类的数据集输入要求。
core.NeuralForecast方法作为全局模型运作,接收一组时间序列而不是单个序列。该类采用交叉学习技术来拟合灵活共享模型,例如神经网络,从而提高其泛化能力,如M4国际预测竞赛所示(Smyl 2019,Semenoglou 2021)。
您可以使用Google Colab通过GPU运行这些实验。
长格式
多重时间序列
将你的时间序列存储在长格式的pandas数据框中,即每一行代表特定序列和时间戳的一个观测值。让我们使用 datasetsforecast 库看一个例子。
Y_df = pd.concat( [series1, series2, ...])
import pandas as pd
from datasetsforecast.m3 import M3Y_df, *_ = M3.load('./data', group='Yearly')
100%|██████████| 1.76M/1.76M [00:00<00:00, 5.55MiB/s]
INFO:datasetsforecast.utils:Successfully downloaded M3C.xls, 1757696, bytes.
Y_df.groupby('unique_id').head(2)| unique_id | ds | y | |
|---|---|---|---|
| 0 | Y1 | 1975-12-31 | 940.66 |
| 1 | Y1 | 1976-12-31 | 1084.86 |
| 20 | Y10 | 1975-12-31 | 2160.04 |
| 21 | Y10 | 1976-12-31 | 2553.48 |
| 40 | Y100 | 1975-12-31 | 1424.70 |
| ... | ... | ... | ... |
| 18260 | Y97 | 1976-12-31 | 1618.91 |
| 18279 | Y98 | 1975-12-31 | 1164.97 |
| 18280 | Y98 | 1976-12-31 | 1277.87 |
| 18299 | Y99 | 1975-12-31 | 1870.00 |
| 18300 | Y99 | 1976-12-31 | 1307.20 |
1290 rows × 3 columns
Y_df.groupby('unique_id').tail(2)| unique_id | ds | y | |
|---|---|---|---|
| 18 | Y1 | 1993-12-31 | 8407.84 |
| 19 | Y1 | 1994-12-31 | 9156.01 |
| 38 | Y10 | 1993-12-31 | 3187.00 |
| 39 | Y10 | 1994-12-31 | 3058.00 |
| 58 | Y100 | 1993-12-31 | 3539.00 |
| ... | ... | ... | ... |
| 18278 | Y97 | 1994-12-31 | 4507.00 |
| 18297 | Y98 | 1993-12-31 | 1801.00 |
| 18298 | Y98 | 1994-12-31 | 1710.00 |
| 18317 | Y99 | 1993-12-31 | 2379.30 |
| 18318 | Y99 | 1994-12-31 | 2723.00 |
1290 rows × 3 columns
Y_df 是一个数据框,包含三列:unique_id,为每个时间序列提供唯一标识符;一列 ds,包含日期戳;以及一列 y,包含序列的值。
单一时间序列
如果您只有一个时间序列,则必须包含 unique_id 列。例如,考虑 AirPassengers 数据集。
Y_df = pd.read_csv('https://raw.githubusercontent.com/Nixtla/transfer-learning-time-series/main/datasets/air_passengers.csv')在这个例子中,Y_df 只包含两列:timestamp 和 value。要使用 NeuralForecast,我们必须包含 unique_id 列并重命名之前的列。
Y_df['unique_id'] = 1. # 我们可以添加一个整数作为标识符。
Y_df = Y_df.rename(columns={'timestamp': 'ds', 'value': 'y'})
Y_df = Y_df[['unique_id', 'ds', 'y']]Y_df| unique_id | ds | y | |
|---|---|---|---|
| 0 | 1.0 | 1949-01-01 | 112 |
| 1 | 1.0 | 1949-02-01 | 118 |
| 2 | 1.0 | 1949-03-01 | 132 |
| 3 | 1.0 | 1949-04-01 | 129 |
| 4 | 1.0 | 1949-05-01 | 121 |
| ... | ... | ... | ... |
| 139 | 1.0 | 1960-08-01 | 606 |
| 140 | 1.0 | 1960-09-01 | 508 |
| 141 | 1.0 | 1960-10-01 | 461 |
| 142 | 1.0 | 1960-11-01 | 390 |
| 143 | 1.0 | 1960-12-01 | 432 |
144 rows × 3 columns
参考文献
Give us a ⭐ on Github