XGBoost 在 Python 中使用包含时间步长的 3 维输入?

XGBoost use 3-Dimensional Input Containing Time Steps in Python?

我正在尝试训练一个 XGBRegressor 的时间序列数据重塑以具有时间步长,因此如果有 12345 个样本,X_train 的结果形状可能类似于 (12345, 5, 10) ,10 个特征和 5 个时间步。

然而,当我们尝试使用这样的训练数据训练XGBRegressor时,

import xgboost as xgb
xgb = xgb.XGBRegressor()
xgbr.fit(X_train, y_train)

我们收到错误

ValueError: ('Expecting 2 dimensional numpy.ndarray, got: ', (12345, 5, 10))

在包含时间步长的训练数据上训练XGBRegressor的正确方法是什么?

从错误中可以清楚地看出,您不能直接用 3D 形状的数组拟合和 XGBRegressor。重复使用 ML 来解决时间序列问题 很常见,尽管您必须确保为回归器提供有意义的特征,捕捉样本之间的时间依赖性。

因此,对于您的特定问题,您可以从创建一个新功能开始,该功能指示样本属于哪个时间步长。这样,决策树还将了解时间相关变量对目标变量的影响。虽然您可以添加越有意义的功能越好,因此您也可以考虑包括捕获其他可能的时间相关统计信息的功能。