Как построить k-кратную перекрестную проверку в R

#r #plot #r-caret #k-fold

#r #построить #r-каретка #k-кратная

Вопрос:

У меня есть модель, похожая на следующую, и мне интересно, есть ли красивый и эффективный способ построения сгибов, чтобы показать стабильность и производительность моей модели?

 data(iris)
df=iris[,1:4]
con = trainControl(method="cv", number=5,savePredictions = TRUE)
for_train = createDataPartition(df$Sepal.Length, p=.70, list=FALSE) 
train=df[for_train,] 
test=df[-for_train,] 

trf_iris = train(Sepal.Length~ .,
                 data=train,ntree=5000,method="rf",metric="Rsquared",trControl=con,importance = TRUE)
 

Ответ №1:

Если вы запустите str(trf_iris) , вы обнаружите, что trf_iris$control$index содержит списки индексов строк для каждого сгиба. Вы можете извлечь их, чтобы воссоздать пятикратные подмножества, а затем построить их.

 library(dplyr)
library(ggplot2)

# get fold subsets
fold_data <- lapply(trf_iris$control$index, function(index) iris[index,]) %>% 
    bind_rows(.id = "Fold")

# example plots
ggplot(fold_data, aes(Sepal.Length, col = Fold))   geom_density()

ggplot(fold_data, aes(Sepal.Width, Sepal.Length, col = Fold))   
    geom_point(col = "black")   
    geom_smooth(method = lm, se = FALSE)
 

введите описание изображения здесь

Вы можете добавить facet_wrap(.~Fold) , если обнаружите, что разделение графиков сгиба выглядит лучше.

введите описание изображения здесь

Комментарии:

1. большое вам спасибо!! фасеты очень полезны!!