使用xgboost函数时出现XGBoost错误

时间:2017-01-21 04:25:05

标签: r xgboost

这是我的代码:

xgb <- xgboost(data = as.matrix(df_all_combined), 
               label = as.matrix(target_train), 
               eta = 0.1,
               max_depth = 15, 
               nround=100, 
               subsample = 0.5,
               colsample_bytree = 0.5,
               seed = 1,
               eval_metric = "auc",
               objective = "binary:logistic",
               num_class = 12,
               nthread = 3)

获取以下错误:

  

xgb.iter.update中的错误(bst $ handle,dtrain,iteration - 1,obj):     [09:17:34] amalgamation /../ src / objective / regression_obj.cc:90:检查失败:(preds.size())==(info.labels.size())标签未正确提供.preds.size = 840756,label.size = 70063

有人可以帮我解决这个问题吗?无法弄清楚问题。

4 个答案:

答案 0 :(得分:3)

尝试从参数中删除num_class = 12。

答案 1 :(得分:1)

错误说: labels are not correctly provided preds.size=840756, label.size=70063

这意味着df_all_combined中的行数与target_train

中的行数不对应

所以target_train应该是形状(840756,)

答案 2 :(得分:0)

Xgboost有多类分类的错误。它使用preds.size()= info.labels.size()* num_classes,同时使用&#39; auc&#39;这是错的。所以使用像merror这样的任何其他指标。

答案 3 :(得分:0)

Objective和num_class似乎不同步 从xgboost参数描述: 目标“二进制:逻辑:用于二进制分类的逻辑回归,输出概率”

在您的问题中,提到的num_class = 12,这似乎是不匹配的,因为二进制目标仅用于预测属于2类(0/1)的变量。