操作指南
转换外部特征
为 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 天的价格,如果您尝试预测更长的时间范围,将会收到错误。