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 来解决时间序列问题 很常见,尽管您必须确保为回归器提供有意义的特征,捕捉样本之间的时间依赖性。
因此,对于您的特定问题,您可以从创建一个新功能开始,该功能指示样本属于哪个时间步长。这样,决策树还将了解时间相关变量对目标变量的影响。虽然您可以添加越有意义的功能越好,因此您也可以考虑包括捕获其他可能的时间相关统计信息的功能。
我正在尝试训练一个 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 来解决时间序列问题 很常见,尽管您必须确保为回归器提供有意义的特征,捕捉样本之间的时间依赖性。
因此,对于您的特定问题,您可以从创建一个新功能开始,该功能指示样本属于哪个时间步长。这样,决策树还将了解时间相关变量对目标变量的影响。虽然您可以添加越有意义的功能越好,因此您也可以考虑包括捕获其他可能的时间相关统计信息的功能。