【发布时间】:2020-06-21 03:36:15
【问题描述】:
我正在尝试使用 XGBoost 对测试数据集没有标签的数据集进行预测。当没有提供目标列时,如何使 xgboost 模型不会失败?
# TRAIN_DATA looks similar to TEST_DATA except TEST_DATA does not have a `target` column
import xgboost as xgb
# read in data
dtrain = xgb.DMatrix(TRAIN_DATA, label=TRAIN_DATA.target)
dtest = xgb.DMatrix(TEST_DATA)
# specify parameters via map
param = {'max_depth':2, 'eta':1, 'objective':'binary:logistic' }
num_round = 2
bst = xgb.train(param, dtrain, num_round)
# make prediction
preds = bst.predict(dtest)
输出:
raise ValueError(msg.format(self.feature_names,
> data.feature_names))
E ValueError: feature_names mismatch: ['geohash', 'uupm', 'driver_supply', 'requested_at', 'target'] ['geohash', 'uupm', 'driver_supply', 'requested_at']
E expected target in input data
../venvs/venv3/lib/python3.6/site-packages/xgboost/core.py:1541: ValueError
【问题讨论】:
-
训练时您的特征名称不应包含
target列 -
为什么?只要我指定
label=target,它就不应该使用目标列 -
您的训练数据集中有“目标”(正如@Narendra_Prasath 所说) - 这是您的问题
-
不,考虑在现实世界中使用您的模型。您将无法访问标签,但您仍想生成预测(进行推理)
-
本教程介绍了如何从训练数据集中删除“目标”:datacamp.com/community/tutorials/xgboost-in-python
标签: python machine-learning xgboost training-data inference