2015-12-20 6 views
3

Я пытаюсь запустить модель с пакетом mlr, но у меня возникли проблемы с функцией predict(). Это дает мне следующее сообщение об ошибке:Ошибка при запуске функции calculate() в пакете mlr

Error in predict(mod, task = task, subset = test) : 
Assertion on 'subset' failed: Must be of type 'integerish', not 'data.frame' 

Пожалуйста найти воспроизводимый пример ниже:

require(mlr)  # models 
require(caTools) # sampling 
require(Zelig) # data 

data("voteincome") 
voteincome$vote <- as.factor(voteincome$vote) 

set.seed(0) 
sample <- sample.split(voteincome, SplitRatio = .75) 
train <- subset(voteincome, sample == TRUE) 
test <- subset(voteincome, sample == FALSE) 

train <- na.omit(train) 
test <- na.omit(test) 

task <- makeClassifTask(data = train, target = "vote") 
lrnr <- makeLearner("classif.randomForest") 
mod <- train(lrnr, task) 
pred <- predict(mod, task = task, subset = test) 

И тогда появляется ошибка. Я делаю что-то неправильно? Благодаря!

+0

Как об этом: 'ПРЕД <- спрогнозировать (по модулю $ learner.model, задачи = задачи, subset = test) ' – Vedda

ответ

2

mlr ожидает индекс вектора будет передан subset аргумента. Затем он автоматически подмножит эти кадры данных, поэтому вам не придется делать это самостоятельно. Вы также можете использовать mlr сделать разбиение на поезд и тест автоматически устанавливает с описанием RESAMPLE (см the tutorial):

require(mlr)  # models 
require(caTools) # sampling 
require(Zelig) # data 

data("voteincome") 
voteincome$vote <- as.factor(voteincome$vote) 

set.seed(0) 
task <- makeClassifTask(data = voteincome, target = "vote") 
lrnr <- makeLearner("classif.randomForest") 
rdesc <- makeResampleDesc("Holdout", split = 0.75) 

res <- resample(learner = lrnr, task = task, resampling = rdesc) 

# get predictions on test set 
getPredictionResponse(res$pred) 

# compute accuracy, also see https://mlr-org.github.io/mlr-tutorial/devel/html/performance/index.html 
performance(res$pred, acc) 
+0

Спасибо за отличный ответ, Ларс. – danilofreire

1

Попробуйте это:

pred <- predict(mod$learner.model, task = task, subset = test) 
+1

Спасибо, @Amstell! Теперь он отлично работает! :) – danilofreire

 Смежные вопросы

  • Нет связанных вопросов^_^