操作指南
使用 numpy 数组进行训练
将您的 Dataframe 转换为数组,以减少内存使用并加快训练速度
大多数机器学习库都使用 numpy 数组,即使您提供 Dataframe,最终也会被转换为 numpy 数组。通过向这些模型提供数组,我们可以加快处理速度,因为转换只发生一次。
数据设置
fit 和 cross_validation 方法
如果您正在使用 MLForecast
的 fit/cross_validation 方法,要使用 numpy 数组进行训练,您只需提供 as_numpy
参数,该参数会在将特征传递给模型之前把它们转换为数组。
预测时,新特征也将被转换为数组,因此速度也会更快。
unique_id | ds | lr | lgbm | |
---|---|---|---|---|
0 | id_0 | 2000-08-10 | 5.268787 | 6.322262 |
1 | id_1 | 2000-04-07 | 4.437316 | 5.213255 |
2 | id_2 | 2000-06-16 | 3.246518 | 4.373904 |
3 | id_3 | 2000-08-30 | 0.144860 | 1.285219 |
4 | id_4 | 2001-01-08 | 2.211318 | 3.236700 |
对于 cross_validation,我们也只需指定 as_numpy=True
。
preprocess 方法
将特征存储为 numpy 数组在某些情况下也很有帮助,例如当您有分类列而库不支持它们时,例如 LightGBM 与 polars。为了在 LightGBM 和 polars 中使用分类特征,我们必须将它们转换为整数表示,并告诉 LightGBM 将这些特征视为分类特征,这可以通过以下方式实现
unique_id | ds | y | static_0 |
---|---|---|---|
cat | datetime[ns] | f64 | cat |
”id_0” | 2000-01-01 00:00:00 | 36.462689 | ”84" |
"id_0” | 2000-01-02 00:00:00 | 121.008199 | ”84” |
为了通过 preprocess 方法将特征获取为数组,我们还需要请求 X, y 元组。
特征名称可在 fcst.ts.features_order_
中获取
现在我们可以训练一个 LightGBM 模型,指定特征名称以及哪些特征应被视为分类特征。
现在我们可以将此模型添加到我们的 models 字典中,如自定义训练指南中所述。
并使用它进行预测。
unique_id | ds | lgbm |
---|---|---|
cat | datetime[ns] | f64 |
”id_0” | 2000-08-10 00:00:00 | 448.796188 |
”id_1” | 2000-04-07 00:00:00 | 81.058211 |
”id_2” | 2000-06-16 00:00:00 | 4.450549 |
”id_3” | 2000-08-30 00:00:00 | 14.219603 |
”id_4” | 2001-01-08 00:00:00 | 87.361881 |