2017-06-10 10 views
-1

なぜこのエラーが発生するのかわかりません!私のデータtrainingはまばらな行列です。ラベルの長さは入力データの行数と同じでなければなりません

dim(training) 
> 14407 161 

dim(label.train) 
> 14407 1 

xgb.train <- xgb.DMatrix(data = training, label = label.train) 
> Error in setinfo.xgb.DMatrix(dmat, names(p), p[[1]]) : 
The length of labels must equal to the number of rows in the input data 

は、私は私のデータをチェックしています

  • label.traintrainingにすべてゼロの行または列
  • すべての値を持っていないdata.frame
  • trainingある数値で

PS。私のデータは膨大なので、再現性のあるコードを投稿することはできません。このエラーを経験した人から何が間違っているのかのヒントが必要です。

答えて

3

ラベルがdata.frameであるため、エラーが発生しています。それらをベクターや行列として渡すことは私にとっては効果的です。

vec_y <- mtcars$vs 
mat_y <- as.matrix(mtcars$vs) 
df_y <- mtcars[,8,drop=FALSE] #column vs is the 8th column 

x <- as.matrix(mtcars[,-8]) #column vs is the 8th column 

#vector labels: works 
xgboost::xgb.DMatrix(data=x, label=vec_y) 
#matrix labels: works 
xgboost::xgb.DMatrix(data=x, label=mat_y) 
#df labels: doesnt work 
xgboost::xgb.DMatrix(data=x, label=df_y) 
+0

ワウ、これで自分を殺すことから私を救った! 私を狂っているのは、別のスクリプトで同じコードを使っていて、問題なく動作しているということです。とりあえずありがとう! – GreenManXY

関連する問題