【发布时间】:2020-10-05 00:37:44
【问题描述】:
我正在尝试构建一个模型,响应变量有三个选项:[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
【问题讨论】:
标签: python machine-learning xgboost