J'applique Naive Bayes à un jeu de données jouet en utilisant le paquet klaR
et tout fonctionne bien.Naies Bayees en klaR et caret
Ensuite, je veux reproduire la même analyse avec caret
utilise method="nb"
, qui est en effet que d'une enveloppe pour la fonction NaiveBayes
dans le package klaR
.
Cependant, cette dernière estimation ne fonctionne pas. Je reçois un message d'erreur. Je connais les limites de l'ensemble de données sur les jouets. Cependant, comme l'analyse avec le paquet klaR
fonctionne, je me demande comment reproduire exactement la même analyse avec caret
?
Voici le code:
# Data
d <- structure(list(Y = structure(c(1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L,
2L, 1L), .Label = c("0", "1"), class = "factor"), x1_disc = structure(c(1L,
2L, 1L, 2L, 3L, 4L, 4L, 5L, 2L, 4L), .Label = c("_02", "_24",
"_46", "_68", "_810"), class = "factor"), x2_disc = structure(c(1L,
1L, 1L, 1L, 2L, 3L, 3L, 3L, 1L, 2L), .Label = c("_02", "_24",
"_46"), class = "factor")), .Names = c("Y", "x1_disc", "x2_disc"
), row.names = c(NA, -10L), class = "data.frame")
# Works(klaR)
library(klaR)
fit2 <- NaiveBayes(Y ~ x1_disc + x2_disc, usekernel = FALSE, fL = 0, data=d)
predict(fit2, d, threshold = 0)
# Does not work (caret)
library(caret)
model2 <- train(form=Y ~ x1_disc + x2_disc,
data=d,
method="nb",
# Uses package klaR
# (see: http://topepo.github.io/caret/train-models-by-tag.html)
trControl=trainControl(method="none"),
tuneGrid = data.frame(fL=0, usekernel=F, adjust=1))
predict(model2, d, type="prob")
peut-être la version caret n'accepte pas les données de la classe "facteur". De la faute de frappe dans "usekernal" au lieu de usekernel "je suppose que vous avez obtenu votre code d'une question validée croisée Avez-vous essayé, comme ils le recommandent, de ne pas utiliser l'interface de la formule mais de spécifier x =' et y = '? – agenis
Merci de m'avoir indiqué la faute de frappe, je l'ai corrigé, puis j'ai essayé de spécifier "x" et "y" et ça a marché, c'est un peu bizarre, mais merci pour l'aide rapide! – majom