入门
快速开始 (本地)
MLForecast 的最小示例
主要概念
mlforecast 的主要组件是 MLForecast 类,它抽象了
- 通过 MLForecast.fit进行特征工程和模型训练
- 通过 MLForecast.predict进行特征更新和多步超前预测
数据格式
数据应为 pandas long format 的 DataFrame,即每一行表示单个序列在给定时间的观测值,至少包含三列
- id_col: 标识每个序列的列。
- target_col: 包含每个时间戳序列值的列。
- time_col: 包含观测到序列值的时间的列。这些通常是时间戳,但也可以是连续整数。
这里我们展示一个使用经典 Box & Jenkins 航空数据的示例,该数据测量了 1949 年至 1960 年国际航空乘客的月度总数。来源:Box, G. E. P., Jenkins, G. M. and Reinsel, G. C. (1976) Time Series Analysis, Forecasting and Control. Third Edition. Holden-Day. Series G。
| 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 | 
在这里,unique_id 列的所有行都具有相同的值,因为这是一个单一时间序列;你可以通过将多个时间序列堆叠在一起并设置一列来区分它们。
我们还有包含时间戳的 ds 列,在这种情况下是月度频率,以及包含每个时间戳序列值的 y 列。
建模
我们可以看到该序列有明显的趋势,因此我们可以进行一阶差分,即用每个值减去上一个月的值。这可以通过将 mlforecast.target_transforms.Differences([1]) 实例传递给 target_transforms 来实现。
然后我们可以使用上一年同一月份的值(滞后 12)作为特征来训练一个线性回归模型,这可以通过传递 lags=[12] 来实现。
上一行计算了特征并训练了模型,所以现在我们可以计算预测值了。
预测
计算未来 12 个月的预测值
| unique_id | ds | LinearRegression | |
|---|---|---|---|
| 0 | AirPassengers | 1961-01-01 | 444.656555 | 
| 1 | AirPassengers | 1961-02-01 | 417.470734 | 
| 2 | AirPassengers | 1961-03-01 | 446.903046 | 
| 3 | AirPassengers | 1961-04-01 | 491.014130 | 
| 4 | AirPassengers | 1961-05-01 | 502.622223 | 
| 5 | AirPassengers | 1961-06-01 | 568.751465 | 
| 6 | AirPassengers | 1961-07-01 | 660.044312 | 
| 7 | AirPassengers | 1961-08-01 | 643.343323 | 
| 8 | AirPassengers | 1961-09-01 | 540.666687 | 
| 9 | AirPassengers | 1961-10-01 | 491.462708 | 
| 10 | AirPassengers | 1961-11-01 | 417.095154 | 
| 11 | AirPassengers | 1961-12-01 | 461.206238 | 
可视化结果
我们可以可视化我们的预测结果。
就这样!你已经训练了一个线性回归模型来预测 1961 年的航空乘客数量。

