如何在 R 中绘制 k 折交叉验证

How to plot k-fold cross validation in R

我有一个类似于下面的模型,我想知道,是否有一种漂亮而有效的方法来绘制褶皱以显示我的模型的稳定性和性能?

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)

如果您 运行 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)