2017-09-09 4 views
0

Je suis nouveau à la bibliothèque caret. Je voudrais utiliser la fonction de train pour exécuter la validation croisée sur mon ensemble de données (en utilisant la méthode rpart pour la classification). Mon but est de produire des courbes d'apprentissage en utilisant les données renvoyées à partir de mon appel à former. La courbe d'apprentissage représenterait la taille de l'ensemble de données sur l'axe des x. L'erreur des prédictions sur les ensembles de formation et de validation croisée serait tracée en fonction de la taille de l'ensemble de données.Comment créer une courbe d'apprentissage (biais/variance) à partir de la sortie de caret :: train

Ma question est, est-ce que caret fait des prédictions sur les plis d'entraînement et de cv? Si la réponse est oui, comment ferais-je pour extraire ces données?

En supposant que la réponse est oui, ici est un simple exemple de code que vous pouvez ajouter à illustrer:

library(MASS) 
data(biopsy) 
biopsy <- biopsy[, -1] 
names(biopsy) <- c("thick", "u.size", "u.shape", "adhsn", "s.size", "nucl", "chrom", "n.nuc", "mit", "class") 
biopsy.v2 <- na.omit(biopsy) 
set.seed(1) 
ind <- sample(2, nrow(biopsy.v2), replace = TRUE, prob = c(0.7, + 0.3)) 
biop.train <- biopsy.v2[ind == 1, ] 
tr.model <- caret::train(class ~ ., data= biop.train, trControl = trainControl(method="cv", number=4, verboseIter = FALSE, savePredictions = "final"), method='rpart') 
#Can I extract train and cv accuracies from tr.model? 

Merci.

note: je me rends compte que je devrais appeler à répétition avec différents échantillons de mon jeu de données (en supposant que caret ne supporte pas cela), et cela n'est pas reflété dans l'exemple de code ici.

Répondre

0

Vous pouvez essayer ceci:

Une trame de données avec les prévisions pour chaque resample:

tr.model$pred 

Une trame de données avec des colonnes pour chaque indicateur de performance. Chaque ligne correspond à chaque rééchantillonnage:

tr.model$resample 

une trame de données avec les paramètres définitifs:

tr.model$bestTune 

une trame de données avec le taux d'erreur de formation et les valeurs des paramètres de réglage:

tr.model$results 

Pour spécifier CV répété:

trainControl(..., repeats = n) 

où n est un entier (le nombre d'ensembles complets de plis pour calculer)

EDIT: déterminer quels étaient rééchantillons dans les plis test:

les informations pertinentes sont dans tr.model trame de données pred $:

tr.model$pred[tr.model$pred$Resample=="Fold1",4:5] 
tr.model$pred[tr.model$pred$Resample=="Fold2",4:5] 
tr.model$pred[tr.model$pred$Resample=="Fold3",4:5] 
tr.model$pred[tr.model$pred$Resample=="Fold4",4:5] 

ceux qui ne sont pas dans les plis de test étaient dans les plis de formation

+0

Merci pour les commentaires sur ce @missuse. En guise de suivi, savez-vous comment je peux déterminer quelles rééchantillonnages étaient dans les plis d'entraînement par rapport au pli de validation croisée (désolé si cela est évident)? –

+0

Content de vous aider. Vérifié. – missuse

+0

OK, donc tr.model $ pred $ Resample contient les résultats du test de pli (merci pour la confirmation). Où puis-je trouver les résultats du pli d'entraînement? –