我正在尝试构建一个模型,响应变量有三个选项:[0,1,2],以下是代码:
def model_jobs(X_train, X_val, y_train, y_val):
param = {'eta': 0.3,
'n_estimators': 600,
'gamma': 2.0,
'max_depth': 3,
'min_child_weight': 1.0,
'subsample': 0.8,
'max_delta_step': 0.0,
'colsample_bytree': 1.0,
'lambda': 1.0,
'alpha': 1.0,
'num_class': 3,
'eval_metric': "aucpr",
'objective': "multi:softprob",
'num_boost_round': 20,
'early_stopping_rounds': 50, }
model_fitting(X_train = X_train, y_train = y_train, X_val = X_val, y_val = y_val, tag="first", param=param)
def model_fitting(X_train, X_val, y_train, y_val, tag, param):
dtrain = xgb.DMatrix(X_train, label=y_train)
dval = xgb.DMatrix(X_val, label=y_val)
watchlist = [(dtrain, "train"), (dval, "eval")]
bst = xgb.train(
dtrain=dtrain,
evals=watchlist,
params=param
)
并且返回以下错误:
Check failed: preds.Size() == info.labels_.Size() (11122134 vs. 3707378) : label size predict size not match
我检查了所有的大小,它们完全正常。这张表格的实际大小是3707378,通过简单的数学计算,我们可以看出11122134 == 3707378 * 3。但令我困惑的是,如果我将参数中的num_class从3改为4,则会出现以下错误:
Check failed: preds.Size() == info.labels_.Size() (14829512 vs. 3707378) : label size predict size not match
14829512 == 3707378 * 4 是什么意思?我做错了什么?num_class和这个错误有什么关系?我的xgboost版本是1.1.1。
auc
:/ - A.Najafi