我在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
在我的情况下,我通过更改分配操作修复了此错误:
labels <- df_train$target_feature
事实证明,通过删除一些列,有些行全部为0,并且无法为模型做出贡献。
对于稀疏矩阵,xgboost R接口使用CSC格式创建方法。目前的问题是该方法自动确定现有非稀疏值的行数,并且不计入末尾的任何完全稀疏行。最后可能会出现类似的完全稀疏列丢失,CSR稀疏格式。有关更多详细信息,请参阅稀疏矩阵格式的xgboost issue #1223和wikipedia。
创建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我在运行时删除它并使用相同的数据集来引用标签列