2016-01-29 7 views
0

После запуска следующий R код:Почему я получаю: Длина этикетки должно быть равно числу строк в ошибки ввода данных при использовании MLR с xgboost

#' load libraries 
library(parallelMap) 
library(mlr) 

#' *** Define the task 
task = makeClassifTask(id = "classif_prem", 
         data = data, 
         target = "Result") 

#' *** Define the learner 
lrn = makeLearner(id = "learn_prem", cl = "classif.xgboost") 

#' train model 
mod = train(learner = lrn, task = task) 

После запуска ул (данные) Я получаю :

> str(data) 
Classes ‘tbl_df’ and 'data.frame': 210 obs. of 3 variables: 
$ Result : Factor w/ 3 levels "Draw","Loss",..: 1 3 1 1 1 2 2 2 1 1 ... 
$ RankDiff: int 11 3 11 5 -14 11 -2 -4 5 -8 ... 
$ DiffDiff: num 1.5 -1 1.5 -1 -1 0 0 -1.5 0 -1.5 ... 

резюме задача дает:

Supervised task: classif_prem 
Type: classif 
Target: Result 
Observations: 210 
Features: 
numerics factors ordered 
     2  0  0 
Missings: FALSE 
Has weights: FALSE 
Has blocking: FALSE 
Classes: 3 
Draw Loss Win 
    61 64 85 
Positive class: NA 
Warning message: 
drop ignored 

затем я получаю ошибку:

Error in xgb.setinfo(dmat, names(p), p[[1]]) : 
The length of labels must equal to the number of rows in the input data 
In addition: Warning message: 
drop ignored 

Любая помощь для предотвращения этой ошибки будет оценена по достоинству. Благодарю.

+0

Не могли бы вы поделиться данными, которые используете? Похоже, он должен работать. –

+2

похоже, что вы передаете tbl_df вместо data.frame как элемент данных в задаче. они не имеют точно таких же свойств, я бы начал с того, что вернул tbl_df обратно в data.frame. но, как говорит ларс, без данных я не могу точно сказать, что происходит. – Zach

+0

Большое спасибо. Дополнительный класс tbl_df возился с mlr и xgboost. Я сделал это только data.frame, и это сработало. – sagrules

ответ

1

спасибо. Дополнительный класс tbl_df возился с mlr и xgboost. Я сделал это только data.frame, и это сработало.