# 取消注释以下行以安装库
# %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列。
# 而不是作为索引
'NIXTLA_ID_AS_COL'] = '1' os.environ[
= pd.read_csv('https://datasets-nixtla.s3.amazonaws.com/air-passengers.csv', parse_dates=['ds'])
df 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
= StatsForecast(
sf =[AutoARIMA(season_length = 12)],
models='M',
freq
)
sf.fit(df)
StatsForecast(models=[AutoARIMA])
predict
方法接受两个参数:预测下一个 h
(表示时间范围)和 level
。
h
(整数):表示预测未来 h 步。在这种情况下,是指 12 个月。level
(浮点数列表):这个可选参数用于概率预测。设置预测区间的level
(或置信百分位)。例如,level=[90]
意味着模型期望真实值在该区间内的概率为 90%。
这里的预测对象是一个新的数据框,包含模型名称和 y hat 值的列,以及不确定性区间的列。
= sf.predict(h=12, level=[90])
forecast_df 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
方法并传入您的预测数据框来绘制预测图。
=[90]) sf.plot(df, forecast_df, level
- 构建一个端到端的预测流程,遵循端到端操作指南中的最佳实践
- 在云中使用Spark和Nixtla,在可扩展的集群中预测数百万个时间序列
- 在您的历史观察数据中检测异常
Give us a ⭐ on Github