Erreurs lors de l'exécution de Caret paquet dans la R
Je cherche à construire un modèle permettant de prédire si un produit ne se vendent sur un site de commerce électronique avec 1 ou 0 étant la sortie.
Mes données est une poignée de variables catégorielles, l'une avec un grand nombre de niveaux, un couple binaire, et un seul (le prix), avec une variable de sortie de 1 ou 0, si oui ou non la fiche produit a été vendue.
C'est mon code:
inTrainingset<-createDataPartition(C$Sale, p=.75, list=FALSE)
CTrain<-C[inTrainingset,]
CTest<-C[-inTrainingset,]
gbmfit<-gbm(Sale~., data=C,distribution="bernoulli",n.trees=5,interaction.depth=7,shrinkage= .01,)
plot(gbmfit)
gbmTune<-train(Sale~.,data=CTrain, method="gbm")
ctrl<-trainControl(method="repeatedcv",repeats=5)
gbmTune<-train(Sale~.,data=CTrain,
method="gbm",
verbose=FALSE,
trControl=ctrl)
ctrl<-trainControl(method="repeatedcv", repeats=5, classProbs=TRUE, summaryFunction = twoClassSummary)
gbmTune<-trainControl(Sale~., data=CTrain,
method="gbm",
metric="ROC",
verbose=FALSE ,
trControl=ctrl)
grid<-expand.grid(.interaction.depth=seq(1,7, by=2), .n.trees=seq(100,300, by=50), .shrinkage=c(.01,.1))
gbmTune<-train(Sale~., data=CTrain,
method="gbm",
metric="ROC",
tunegrid= grid,
verebose=FALSE,
trControl=ctrl)
set.seed(1)
gbmTune <- train(Sale~., data = CTrain,
method = "gbm",
metric = "ROC",
tuneGrid = grid,
verbose = FALSE,
trControl = ctrl)
Je suis en cours d'exécution en deux questions. La première est lorsque je tente d'ajouter le summaryFunction=twoClasssummary, puis réglez-je obtenir ceci:
Erreur dans trainControl(Vente ~ ., données = CTrain, method = "gbm", métrique = "ROC", :
inutilisés arguments (data = CTrain, métrique = "ROC", trControl = ctrl)
Le deuxième problème si je décide de contourner le summaryFunction, c'est quand j'essaie d'exécuter le modèle, j'obtiens cette erreur:
Erreur dans evalSummaryFunction(y, wts = poids, ctrl = trControl, lev = classLevels, :
train (le)'s l'utilisation de ROC codes exige de la classe des probabilités. Voir la classProbs option de trainControl()
En outre: le message d'Avertissement:
Dans le train.par défaut(x, y, poids = w, ...) :
ne peut pas calculer la classe de probabilités pour la régression
J'ai essayé de changer la variable de sortie à partir d'une valeur numérique de 1 ou de 0, pour une valeur de texte, dans excel, mais ce n'est pas faire une différence.
Toute aide serait grandement appréciée sur la façon de corriger le fait que c'est l'interprétation de ce modèle comme une régression, ou le premier message d'erreur je rencontre.
Mieux,
Bon, je vais le faire! Merci
il est très proche de la reproductible si vous pouvez simplement utiliser l'une de la construit dans les ensembles de données, vérifiez que vos erreurs subsistent que des données, et laissez-nous savoir lequel utiliser. Vous pouvez exécuter
data()
pour voir les ensembles de données dans caret
comme GermanCredit
Okay cool. Je vais courir avec la GermanCredit et essayer. Merci pour la considération.
cool! Je suis en train de faire la même chose. Par la manière, ce qui est
gbm
? Ce n'est pas de l'emballage caret
. Mise à JOUR: ah, je vois que c'est à partir du package gbm
et semble être dégradé stimuler
OriginalL'auteur Will Bunker | 2014-10-15
Vous devez vous connecter pour publier un commentaire.
Votre résultat est:
Bien que
gbm
attend de cette façon, c'est assez surnaturelle pour coder les données. Presque tous les autres la fonction utilise des facteurs.Donc si vous donnez
train
numérique 0/1 données, il pense que vous voulez faire de régression. Si vous convertissez un facteur de "0" et "1" comme les niveaux (et si vous voulez de la classe de probabilités), vous devriez avoir vu un avertissement qui dit "Au moins un des niveaux de classe ne sont pas valides R des noms de variables; Cela peut provoquer des erreurs si la classe probabilités sont générés parce que les noms de variables seront convertis...". Ce n'est pas un vain d'avertissement.Utilisation des niveaux de facteurs qui sont valides R les noms de variables et vous devriez être bien.
Max
OriginalL'auteur topepo
J'étais capable de reproduire votre erreur à l'aide de la
data(GermanCredit)
dataset.Votre erreur vient de l'utilisation
trainControl
comme si c'étaitgbm
,train
, ou quelque chose.Si vous découvrez la vignette de la documentation connexe avec
?trainControl
ensuite, vous verrez qu'il est à la recherche pour une entrée qui est très différent de ce que vous donnez.Cela fonctionne:
En fonction de ce que vous voulez accomplir, vous pouvez ré-spécifier qu'un peu différemment, mais tout se résume à ce que vous avez utilisé
trainControl
comme si c'étaittrain
.Vous êtes les bienvenus. Par respécifier je voulais dire que vous pouvez définir les options à votre convenance, telles que la méthode et choisir votre X des variables. Ce que j'ai mis il devrait fonctionner, mais je n'ai pas votre jeu de données d'origine donc je ne sais pas vraiment qui sont les choix idéal. Pour faire de la prédiction, vous parlez, vous avez juste besoin de la régression qui est spécifié dans le
train
consolidés. Alors, prenez votre équipés de modèles et d'appliquer les coefficients de la validation des données pour obtenir des prédictions. Avec les modèles de régression cela peut être fait avecpredict
,prediction
,predictOMatic
etc. Vous a donné un +1 pour la question.À droite, j'ai utilisé la fonction predict avant, pas en accent circonflexe, mais je suis en supposant qu'il fonctionne de manière similaire à d'autres packages r. Merci pour la clarification.
Np. Cela peut aider pour le signe spécifique de prédiction: inside-r.org/packages/cran/caret/docs/extractPrediction
Merci pour la ressource! J'obtiens l'erreur, unsused argument quand je le lance avec "graines=graines?
OriginalL'auteur Hack-R