我们的时间序列模型提供了一个强大的功能,允许用户在获取未来预测的同时检索历史预测。通过在 forecast 方法中设置 add_history=True 参数即可使用此功能。

1. 导入包

首先,我们安装并导入所需的包,然后初始化 Nixtla 客户端。

import pandas as pd
from nixtla import NixtlaClient
nixtla_client = NixtlaClient(
    # defaults to os.environ.get("NIXTLA_API_KEY")
    api_key = 'my_api_key_provided_by_nixtla'
)

👍 使用 Azure AI 端点

要使用 Azure AI 端点,请设置 base_url 参数

nixtla_client = NixtlaClient(base_url="you azure ai endpoint", api_key="your api_key")

2. 加载数据

现在您可以开始进行预测了!让我们导入一个示例

df = pd.read_csv('https://raw.githubusercontent.com/Nixtla/transfer-learning-time-series/main/datasets/air_passengers.csv')
df.head()
时间戳
01949-01-01112
11949-02-01118
21949-03-01132
31949-04-01129
41949-05-01121
nixtla_client.plot(df, time_col='timestamp', target_col='value')

3. 历史预测

让我们添加拟合值。当 add_history 设置为 True 时,输出 DataFrame 将不仅包含由 h 参数决定的未来预测,还将包含历史预测。目前,历史预测不受 h 参数影响,其固定预测范围取决于数据的频率。历史预测是以滚动窗口的方式生成的,然后进行连接。这意味着模型在每个时间步长上顺序应用,仅使用截至该时间点可用的最新信息。

timegpt_fcst_with_history_df = nixtla_client.forecast(
    df=df, h=12, time_col='timestamp', target_col='value',
    add_history=True,
)
INFO:nixtla.nixtla_client:Validating inputs...
INFO:nixtla.nixtla_client:Preprocessing dataframes...
INFO:nixtla.nixtla_client:Inferred freq: MS
INFO:nixtla.nixtla_client:Calling Forecast Endpoint...
INFO:nixtla.nixtla_client:Calling Historical Forecast Endpoint...

📘 Azure AI 中的可用模型

如果您正在使用 Azure AI 端点,请确保设置 model="azureai"

nixtla_client.forecast(..., model="azureai")

对于公共 API,我们支持两种模型:timegpt-1timegpt-1-long-horizon

默认情况下,使用 timegpt-1。关于如何以及何时使用 timegpt-1-long-horizon,请参阅此教程

timegpt_fcst_with_history_df.head()
时间戳TimeGPT
01951-01-01135.483673
11951-02-01144.442398
21951-03-01157.191910
31951-04-01148.769363
41951-05-01140.472946

让我们绘制结果图。这种将过去和未来预测整合在一起的视图对于理解模型的行为以及评估其随时间的性能非常有价值。

nixtla_client.plot(df, timegpt_fcst_with_history_df, time_col='timestamp', target_col='value')

但请注意,序列的初始值不包含在这些历史预测中。这是因为 TimeGPT 需要一定数量的初始观测值才能生成可靠的预测。因此,在解释输出时,务必注意前几个观测值是模型预测的基础,而非预测值本身。