网格调整xgboost缺少数据

时间:2016-05-05 18:04:15

标签: r machine-learning

似乎网格调整xgboost模型的预期方法是使用插入包,如下所示:https://stats.stackexchange.com/questions/171043/how-to-tune-hyperparameters-of-xgboost-trees

但是,我很难理解丢失数据的情况。在不使用插入符号的情况下创建模型时,我将缺失设置为NA。

dtrain = xgb.DMatrix(data = data.matrix(train$data),label = train$label,missing = NA)

这允许我像这样创建模型:

bst = xgboost(data = dtrain,depth = 4,eta =.3,nthread = 2,
          nround = 43, print.every.n = 5,
          objective = "binary:logistic",eval_metric = "auc",verbose = TRUE 
          )

这非常好用,但是,插入符没有采用这种对象。

这就是我正在尝试的:

xgbtrain = train(x = train$data,y = as.factor(make.names(train$label)), 
             trControl = trControl, tuneGrid = my_grid,method = "xgbTree")

但是对于每次迭代它都告诉我:

Error in xgb.DMatrix(as.matrix(x), label = y) : can not open file "NA"

当我没有将我的遗失设置为NA时,这是我在常规xgb.boost中获得的相同错误消息。 xgb.DMatrix不是我可以从中获取数据的子表对象,也不可能将其转换为数据帧。我该如何解决这个问题?

修改

想出来。最后,它与丢失的数据无关,而是与数据集中的因素有关。我没有使用xgboost的函数转换为稀疏矩阵,而是使用了常规的model.matrix(),并且能够成功地将新矩阵插入到插入符号的列车功能中。

0 个答案:

没有答案