2017-07-10 2 views
4

J'ai essayé de former un modèle h2o en utilisant le code suivant et faire une prédiction pour de nouvelles données, mais cela conduit à une erreur. Comment puis-je éviter cette erreur?Erreur de prédiction avec mlr:

library(mlr) 
a <- data.frame(y=factor(c(1,1,1,1,1,1,1,1,0,0,1,0)), 
       x1=rep(c("a","b","c"), times=c(6,3,3))) 
aTask <- makeClassifTask(data = a, target = "y", positive = "1") 
h2oLearner <- makeLearner("classif.h2o.deeplearning", 
          predict.type = "prob") 
model <- train(h2oLearner, aTask) 

b <- data.frame(x1=rep(c("a","b", "c"), times=c(3,5,4))) 
pred <- predict(model, newdata=b) 

conduit à l'erreur suivante:

Error in checkPredictLearnerOutput(.learner, .model, p) :
predictLearner for classif.h2o.deeplearning has returned not the class levels as column names: p0,p1

Si je change predict.type de "réponse" cela fonctionne. Alors, comment prédire les probabilités?

+0

Juste pour info, je n'ai vu personne utiliser mlr (avec ou sans succès) avec h2o auparavant. Sur la base de ce qui précède, je m'attends à ce que des mesures d'intégration soient nécessaires pour que cela fonctionne. – TomKraljevic

+0

Je ne sais pas si ce commentaire est toujours utile maintenant que nous savons qu'il est dû à un bogue, mais par exemple cela fonctionne (sur un ordinateur différent, où j'ai d'abord besoin de mettre à jour R): library (mlr) data (iris) iris2 <- iris iris2 $ Espèce <- ifelse (iris $ Espèce == "setosa", "ja", "nein") task = makeClassifTask (data = iris2, target = "espèce") lrn = makeLearner ("classif.h2o.deeplearning", predict.type = "prob") modèle = train (lrn, tâche) pred = predict (model, newdata = iris2) – tover

Répondre

3

Ce bug a été corrigé dans this commit et sera dans la prochaine version. Jusque-là, vous pouvez installer la version Github:

devtools::install_github("mlr-org/mlr") 
+0

Malheureusement cela me donne une erreur (Installation échouée: Timeout was atteint). Y a-t-il une autre façon d'installer la version Github? – tover

+0

Vous pouvez également cloner le référentiel et faire 'R CMD INSTALL .' –