我想在R中使用XGBoost来预测新数据集。
为生成模型的训练数据结构,我使用以下代码转换数据框(其中包含整数,因子和数字数据类型):
dtrain <- xgb.DMatrix(data = model.matrix(frm, data = train), label = label)
创建必要的对象。然后可以对我的模型进行训练和检查。
但是...
现在,我想使用此模型来预测新数据。我导入了新数据,但是当我以与上述类似的方法创建DMatrix结构时,我得到了DIFFERENT矩阵结构。这是因为新数据仅包含原始数据因素的子集,并且在进行单次热编码过程时,并非所有必需的列都会被建立。如果我尝试针对这个新对象进行预测,则会收到错误消息:
predict.xgb.Booster(xgbmodel,model.matrix(frm,data = newData))
存储在
object
和newdata
中的功能名称不同!
然后我的问题是:如何(有效)创建一个与原始训练数据具有相同列结构但使用新预测数据的DMatrix对象?我希望这会在新的预测数据表中填充为零的傻瓜一热列。