XGBoost(R 接口)抛出“标签集不能为空”错误

数据挖掘 r xgboost
2022-02-23 12:37:12

我正在尝试使用 XGBoost 模型来执行超过 40 个类的多类分类。

代码如下:

xgb_params = list(colsample_bytree= 0.7,
                  subsample = 0.7,
                  eta = 0.05,
                  objective= 'multi:softmax',
                  max_depth= 5,
                  min_child_weight= 1,
                  eval_metric= "mlogloss", num_class = categoryclassnos,
                  nthread=4)

fit.xgb = xgb.train(params = xgb_params,
                    data = dtrain,
                    nrounds = 500,
                    watchlist = list(train = dtrain, test=dtest),
                    print_every_n = 50)

但是,我收到以下错误:

检查失败:(info.labels.size()) != (0) 标签集不能为空

我在这里复制了数据集和 R 脚本。

任何帮助/指针都非常感谢。

2个回答

在python中我需要设置label参数 dtrain = xgb.DMatrix(X_train,label=y_train,feature_names=cfg_col_X)

PS我打算发表评论,但缺少代表点。

对于train一个模型,你需要两件事,你的训练数据(变量和观察的矩阵)和你的标签(训练数据中每个观察的已知分类)。也许您数据中的最后一列实际上是标签?dtrain如果是这样,您将垂直拆分data=除最后一列之外的所有列,以及label=仅最后一列的参数。

拥有模型后,您可以将其用于predict没有标签的数据,输出将是标签。