生成与另一张表具有相同列的模型矩阵

时间:2019-06-18 13:07:30

标签: r sparse-matrix xgboost

我想在R中使用XGBoost来预测新数据集。

为生成模型的训练数据结构,我使用以下代码转换数据框(其中包含整数,因子和数字数据类型):

dtrain <- xgb.DMatrix(data = model.matrix(frm, data = train), label = label)

创建必要的对象。然后可以对我的模型进行训练和检查。

但是...

现在,我想使用此模型来预测新数据。我导入了新数据,但是当我以与上述类似的方法创建DMatrix结构时,我得到了DIFFERENT矩阵结构。这是因为新数据仅包含原始数据因素的子集,并且在进行单次热编码过程时,并非所有必需的列都会被建立。如果我尝试针对这个新对象进行预测,则会收到错误消息:

  

predict.xgb.Booster(xgbmodel,model.matrix(frm,data =   newData))

     

存储在objectnewdata中的功能名称不同!

然后我的问题是:如何(有效)创建一个与原始训练数据具有相同列结构但使用新预测数据的DMatrix对象?我希望这会在新的预测数据表中填充为零的傻瓜一热列。

0 个答案:

没有答案