2016-04-08 3 views
2

Ich bin ein wenig verwirrt, wie caret Partituren der Test Falten in k-fache Kreuzvalidierung.Beziehen Prognosen auf Testdatensätze für k-fache Kreuzvalidierung in caret

Ich möchte einen Datenrahmen oder eine Matrix erstellen, die die gescorte Datensätze der zehn Testdatensätze in 10-fach-Kreuzvalidierung enthält.

beispielsweise unter Verwendung des Iris-Datensatz ein Entscheidungsbaum-Modell zu trainieren:

install.packages("caret", dependencies=TRUE) 

library(caret) 

data(iris) 

train_control <- trainControl(method="cv", number=10, savePredictions = TRUE), 

model <- train(Species ~ ., data=iris, trControl=train_control, method="rpart") 

model$pred 

model$pred Die Befehlslisten Vorhersagen für zehn Falten in 450 Datensätze.

Dies scheint nicht richtig - sollte nicht model$pred produzieren Vorhersagen für die 150 Datensätze in den zehn Test Falten (1/10 * 150 = 15 Datensätze pro Test-fach)? Wie werden 450 Datensätze generiert?

Antwort

3

standardmäßig train iteriert über drei Werte für die Komplexität Parameter cp von rpart (siehe ?rpart.control):

library(caret) 
data(iris) 
train_control <- trainControl(method="cv", number=10, savePredictions = TRUE) 

model <- train(Species ~ ., 
       data=iris, 
       trControl=train_control, 
       method="rpart") 
nrow(model$pred) 
# [1] 450 
length(unique(model$pred$cp)) 
# [1] 3 

Sie können das ausdrücklich zum Beispiel ändern, indem cp=0.05 Angabe:

model <- train(Species ~ ., 
       data=iris, 
       trControl=train_control, 
       method="rpart", 
       tuneGrid = data.frame(cp = 0.05)) 
nrow(model$pred) 
# [1] 150 
length(unique(model$pred$cp)) 
# [1] 1 

oder unter Verwendung von tuneLength=1 anstelle des Standards 3:

model <- train(Species ~ ., 
       data=iris, 
       trControl=train_control, 
       method="rpart", 
       tuneLength = 1) 
nrow(model$pred) 
# [1] 150 
length(unique(model$pred$cp)) 
# [1] 1 
+0

Dank lukeA! Ich muss darauf achten, die Abstimmungsparameter für jede Prozedur anzugeben. – RobertF

Verwandte Themen