【问题标题】:Can't pass xgb.DMatrix to caret无法将 xgb.DMatrix 传递给插入符号
【发布时间】:2017-03-14 01:26:23
【问题描述】:

我正在尝试使用插入符号库调整 xgboost 的超参数以解决分类问题,由于我的数据集中有很多因素并且 xgboost 喜欢将数据作为数字,我使用特征哈希创建了一个虚拟行,但是当我得到运行 caret train ,我得到一个错误

#Using Feature hashing to convert all the factor variables to dummies
objTrain_hashed = hashed.model.matrix(~., data=train1[,-27], hash.size=2^15, transpose=FALSE)
#created a dense matrix which is normally accepted by xgboost method in R
#Hoping I could pass it caret as well
dmodel  <- xgb.DMatrix(objTrain_hashed[, ], label = train1$Walc)

xgb_grid_1 = expand.grid(
  nrounds = 500, 
  max_depth = c(5, 10, 15), 
  eta = c(0.01, 0.001, 0.0001), 
  gamma = c(1, 2, 3), 
  colsample_bytree = c(0.4, 0.7, 1.0), 
  min_child_weight = c(0.5, 1, 1.5)
)


xgb_trcontrol_1 = trainControl(
  method = "cv",
  number = 3,
  verboseIter = TRUE,
  returnData = FALSE,
  returnResamp = "all",                                                        # save losses across all models
  classProbs = TRUE,                                                           # set to TRUE for AUC to be computed
  summaryFunction = twoClassSummary,
  allowParallel = TRUE
)

xgb_train1 <- train(Walc ~.,dmodel,method = 'xgbTree',trControl = xgb_trcontrol_1,
                    metric = 'accuracy',tunegrid = xgb_grid_1)

我收到以下错误

Error in as.data.frame.default(data) : 
  cannot coerce class ""xgb.DMatrix"" to a data.frame

有什么建议,我该如何继续?

【问题讨论】:

    标签: r r-caret xgboost


    【解决方案1】:

    这是因为您在代码的最后部分输入了dmodel。尝试输入objTrain_hashed,这是一个矩阵,而不是xgb.DMatrix

    【讨论】:

      【解决方案2】:

      sparse.model.matrix() 代替 hashed.model.matrix 怎么样... 它可以在我的电脑上运行... 并且不要转换为 xgb.DMatrix() 把它放在 train() 函数中,只是 sparse.model.matrix() 形式。

      喜欢...

      model_data <- sparse.model.matrix(Y~., raw_data)
      

      xgb_train1 <- train(Y ~.,model_data, <bla bla> ...)
      

      希望它有效...谢谢。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-06-05
        • 2017-11-20
        • 2012-08-06
        • 2016-01-13
        • 2015-12-04
        • 2021-05-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多