2016-03-07 36 views
0

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

数这里是R代码:

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

虽然第一个工作正常。

dim(ctt1[,nr])

[1] 6401 1048

dim(ctt1)

[1] 6401 5901

+0

也许缺少数据的问题吗? –

+0

thx。我查了一下,没有丢失数据。 –

+0

顺便说一句,nr是从ctt1列中选择的数组 –

回答

2

事实证明,通过去除某些列,也有一些行全部为0,并不能有助于模型。

1

对于稀疏矩阵,xgboost R接口使用CSC格式创建方法。目前的问题是,此方法自动确定现有非稀疏值中的行数,并且末尾的任何完全稀疏行都不计入。末尾的完全稀疏列的相似损失可能会发生在CSR稀疏格式。有关详细信息,请参阅xgboost issue #1223以及稀疏矩阵格式的wikipedia

1

在我来说,我通过改变分配运算修正了这个错误:

labels <- df_train$target_feature

相关问题