# 取消注释以下行以安装库
# %pip 安装 statsforecast快速开始
StatsForecast 的最小示例
StatsForecast 遵循 sklearn 模型 API。在这个最简单的示例中,您将创建一个 StatsForecast 类的实例,然后调用其 fit 和 predict 方法。如果速度不是最重要的,并且您希望探索拟合值和参数,我们建议使用此选项。
如果您希望预测多个系列,建议使用 forecast 方法。请查看这个 多时间序列入门指南。
StatsForecast 的输入始终是一个具有三列的 长格式 数据框:unique_id、ds 和 y:
unique_id(字符串、整数或类别)表示系列的标识符。ds(日期戳)列应该是 Pandas 期望的格式,理想情况下,对于日期应为 YYYY-MM-DD,或者对于时间戳应为 YYYY-MM-DD HH:MM:SS。y(数值型)表示我们希望预测的测量值。
作为示例,让我们看看美国航空乘客数据集。该时间序列包含 1949 年至 1960 年间美国航空公司乘客的月总数。CSV 文件可在 这里 获取。
我们假设您已经安装了 StatsForecast。请查看此指南以获取 如何安装 StatsForecast 的说明。
首先,我们将导入数据:
import os
import pandas as pd# 这样,预测方法的输出结果中就会包含一个id列。
# 而不是作为索引
os.environ['NIXTLA_ID_AS_COL'] = '1'df = pd.read_csv('https://datasets-nixtla.s3.amazonaws.com/air-passengers.csv', parse_dates=['ds'])
df.head()| unique_id | ds | y | |
|---|---|---|---|
| 0 | AirPassengers | 1949-01-01 | 112 |
| 1 | AirPassengers | 1949-02-01 | 118 |
| 2 | AirPassengers | 1949-03-01 | 132 |
| 3 | AirPassengers | 1949-04-01 | 129 |
| 4 | AirPassengers | 1949-05-01 | 121 |
我们通过实例化一个新的 StatsForecast 对象并提供其两个必需参数来拟合模型: https://nixtla.github.io/statsforecast/src/core/models.html * models:模型列表。选择您想要的模型,来自 models 并导入它们。在这个例子中,我们将使用 AutoARIMA 模型。我们将 season_length 设置为 12,因为我们预期每 12 个月会有季节性影响。(参见:季节性周期)
freq:一个字符串,指示数据的频率。(参见 pandas 可用频率)
所有设置都传递给构造函数。然后您调用其 fit 方法并传入历史数据框。
StatsForecast 通过 Numba 使用 JIT 编译实现其惊人的速度。第一次调用 statsforecast 类时,fit 方法大约需要 5 秒钟。第二次调用 - 一旦 Numba 编译了您的设置 - 它应该少于 0.2 秒。
from statsforecast import StatsForecast
from statsforecast.models import AutoARIMA
sf = StatsForecast(
models=[AutoARIMA(season_length = 12)],
freq='M',
)
sf.fit(df)StatsForecast(models=[AutoARIMA])
predict 方法接受两个参数:预测下一个 h(表示时间范围)和 level。
h(整数):表示预测未来 h 步。在这种情况下,是指 12 个月。level(浮点数列表):这个可选参数用于概率预测。设置预测区间的level(或置信百分位)。例如,level=[90]意味着模型期望真实值在该区间内的概率为 90%。
这里的预测对象是一个新的数据框,包含模型名称和 y hat 值的列,以及不确定性区间的列。
forecast_df = sf.predict(h=12, level=[90])
forecast_df.tail()| unique_id | ds | AutoARIMA | AutoARIMA-lo-90 | AutoARIMA-hi-90 | |
|---|---|---|---|---|---|
| 7 | AirPassengers | 1961-07-31 | 633.230774 | 589.562378 | 676.899170 |
| 8 | AirPassengers | 1961-08-31 | 535.230774 | 489.082153 | 581.379456 |
| 9 | AirPassengers | 1961-09-30 | 488.230804 | 439.728699 | 536.732910 |
| 10 | AirPassengers | 1961-10-31 | 417.230804 | 366.484253 | 467.977356 |
| 11 | AirPassengers | 1961-11-30 | 459.230804 | 406.334930 | 512.126648 |
您可以通过调用 StatsForecast.plot 方法并传入您的预测数据框来绘制预测图。
sf.plot(df, forecast_df, level=[90])
- 构建一个端到端的预测流程,遵循端到端操作指南中的最佳实践
- 在云中使用Spark和Nixtla,在可扩展的集群中预测数百万个时间序列
- 在您的历史观察数据中检测异常
Give us a ⭐ on Github