xgb.setinfo中的错误(dmat,names(p),p [[1]]):标签的长度必须等于输入数据中的行数

问题描述 投票:0回答:4

我在R中使用xgboost。我有一个矩阵并且创建了xgb矩阵,但是当我减少数据中的列时,我收到以下错误:xgb.setinfo中的错误(dmat,names(p),p [ [1]]):标签的长度必须等于输入数据中的行数

这是R代码:

xgbmat1 = xgb.DMatrix(Matrix(data.matrix(ctt1)),label = as.matrix(as.numeric(data $ V2)) - 1)xgbmat1 = xgb.DMatrix(Matrix(data.matrix(ctt1 [,nr ])),标记= as.matrix(as.numeric(数据$ V2)) - 1)

第一个工作正常。

无(ctt1 [,nr])

[1] 6401 1048

无(ctt1)

[1] 6401 5901

r matrix xgboost
4个回答
3
投票

在我的情况下,我通过更改分配操作修复了此错误:

labels <- df_train$target_feature


2
投票

事实证明,通过删除一些列,有些行全部为0,并且无法为模型做出贡献。


2
投票

对于稀疏矩阵,xgboost R接口使用CSC格式创建方法。目前的问题是该方法自动确定现有非稀疏值的行数,并且不计入末尾的任何完全稀疏行。最后可能会出现类似的完全稀疏列丢失,CSR稀疏格式。有关更多详细信息,请参阅稀疏矩阵格式的xgboost issue #1223wikipedia


0
投票

创建DBMatrix的正确方法

    xgtrain <- xgb.DMatrix(data = as.matrix(X_train[,-5]), label = `X_train$item_cnt_month)`

删除data参数中的label列并在index 5中为create label列使用相同的数据集我有item_cnt_month我在运行时删除它并使用相同的数据集来引用标签列

© www.soinside.com 2019 - 2024. All rights reserved.