操作指南
转换外部特征
为 MLForecast 计算外部特征的变换
MLForecast 类允许您对目标计算滞后变换,然而,有时您也想对动态外部特征计算变换。本指南展示了如何实现这一点。
数据准备
| ds | unique_id | price | |
|---|---|---|---|
| 0 | 2000-10-05 | 0 | 0.548814 | 
| 1 | 2000-10-06 | 0 | 0.715189 | 
假设您有一些序列,其中包含每个 id 和日期的价格,并且您想计算未来 7 天的预测。由于价格是一个动态特征,您必须通过 MLForecast.predict 中的 X_df 提供未来的值。
如果您不仅想使用价格,还想使用价格的 lag7 和 lag1 的扩展均值等,您可以在训练前计算它们,将它们与您的序列合并,然后通过 X_df 提供未来的值。考虑以下示例。
计算变换
| ds | unique_id | price | price_lag7 | price_expanding_mean_lag1 | |
|---|---|---|---|---|---|
| 0 | 2000-10-05 | 0 | 0.548814 | NaN | NaN | 
| 1 | 2000-10-06 | 0 | 0.715189 | NaN | 0.548814 | 
| 2 | 2000-10-07 | 0 | 0.602763 | NaN | 0.632001 | 
| 3 | 2000-10-08 | 0 | 0.544883 | NaN | 0.622255 | 
| 4 | 2000-10-09 | 0 | 0.423655 | NaN | 0.602912 | 
| 5 | 2000-10-10 | 0 | 0.645894 | NaN | 0.567061 | 
| 6 | 2000-10-11 | 0 | 0.437587 | NaN | 0.580200 | 
| 7 | 2000-10-12 | 0 | 0.891773 | 0.548814 | 0.559827 | 
| 8 | 2000-10-13 | 0 | 0.963663 | 0.715189 | 0.601320 | 
| 9 | 2000-10-14 | 0 | 0.383442 | 0.602763 | 0.641580 | 
您现在可以将其与您的原始序列合并
| unique_id | ds | y | price | price_lag7 | price_expanding_mean_lag1 | |
|---|---|---|---|---|---|---|
| 0 | 0 | 2000-10-05 | 0.322947 | 0.548814 | NaN | NaN | 
| 1 | 0 | 2000-10-06 | 1.218794 | 0.715189 | NaN | 0.548814 | 
| 2 | 0 | 2000-10-07 | 2.445887 | 0.602763 | NaN | 0.632001 | 
| 3 | 0 | 2000-10-08 | 3.481831 | 0.544883 | NaN | 0.622255 | 
| 4 | 0 | 2000-10-09 | 4.191721 | 0.423655 | NaN | 0.602912 | 
| 5 | 0 | 2000-10-10 | 5.395863 | 0.645894 | NaN | 0.567061 | 
| 6 | 0 | 2000-10-11 | 6.264447 | 0.437587 | NaN | 0.580200 | 
| 7 | 0 | 2000-10-12 | 0.284022 | 0.891773 | 0.548814 | 0.559827 | 
| 8 | 0 | 2000-10-13 | 1.462798 | 0.963663 | 0.715189 | 0.601320 | 
| 9 | 0 | 2000-10-14 | 2.035518 | 0.383442 | 0.602763 | 0.641580 | 
然后您可以定义您的预测对象。请注意,您仍然可以像往常一样基于目标计算滞后特征。
| unique_id | ds | y | price | price_lag7 | price_expanding_mean_lag1 | lag1 | dayofweek | |
|---|---|---|---|---|---|---|---|---|
| 1 | 0 | 2000-10-06 | 1.218794 | 0.715189 | NaN | 0.548814 | 0.322947 | 4 | 
| 2 | 0 | 2000-10-07 | 2.445887 | 0.602763 | NaN | 0.632001 | 1.218794 | 5 | 
| 3 | 0 | 2000-10-08 | 3.481831 | 0.544883 | NaN | 0.622255 | 2.445887 | 6 | 
| 4 | 0 | 2000-10-09 | 4.191721 | 0.423655 | NaN | 0.602912 | 3.481831 | 0 | 
| 5 | 0 | 2000-10-10 | 5.395863 | 0.645894 | NaN | 0.567061 | 4.191721 | 1 | 
重要的是要注意,dropna 参数仅考虑基于目标生成的滞后特征所产生的空值。如果您想删除所有包含空值的行,您必须在原始序列中进行此操作。
| unique_id | ds | y | price | price_lag7 | price_expanding_mean_lag1 | lag1 | dayofweek | |
|---|---|---|---|---|---|---|---|---|
| 8 | 0 | 2000-10-13 | 1.462798 | 0.963663 | 0.715189 | 0.601320 | 0.284022 | 4 | 
| 9 | 0 | 2000-10-14 | 2.035518 | 0.383442 | 0.602763 | 0.641580 | 1.462798 | 5 | 
| 10 | 0 | 2000-10-15 | 3.043565 | 0.791725 | 0.544883 | 0.615766 | 2.035518 | 6 | 
| 11 | 0 | 2000-10-16 | 4.010109 | 0.528895 | 0.423655 | 0.631763 | 3.043565 | 0 | 
| 12 | 0 | 2000-10-17 | 5.416310 | 0.568045 | 0.645894 | 0.623190 | 4.010109 | 1 | 
您现在可以训练模型了。
并使用价格进行预测。请注意,您可以提供包含完整历史记录的 dataframe,mlforecast 将过滤预测范围内所需的日期。
| unique_id | ds | LinearRegression | |
|---|---|---|---|
| 0 | 0 | 2001-05-15 | 3.803967 | 
| 1 | 1 | 2001-05-15 | 3.512489 | 
| 2 | 2 | 2001-05-15 | 3.170019 | 
| 3 | 3 | 2001-05-15 | 4.307121 | 
| 4 | 4 | 2001-05-15 | 3.018758 | 
在此示例中,我们有未来 7 天的价格,如果您尝试预测更长的时间范围,将会收到错误。

