我正在尝试训练一个XGBRegressor
模型,使用重塑后的时间序列数据,使得X_train
的形状可能是(12345, 5, 10)
,如果有12345个样本,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
?
回答:
从错误信息中可以清楚地看出,您不能直接使用三维形状的数组来拟合和训练XGBRegressor
。虽然在时间序列问题中使用机器学习是很常见的,但您必须确保向回归器提供有意义的特征,这些特征能够捕捉样本之间的时间依赖性。
对于您的问题,您可以从创建一个新的特征开始,这个特征表示样本所属的时间步长。这样,决策树还可以学习时间依赖变量对目标变量的影响。当然,您添加的有意义特征越多越好,因此您也可以考虑包括其他可能的时间依赖统计特征。