这是我的代码:
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
有人可以帮我解决这个问题吗?无法弄清楚问题。
答案 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)的变量。