如何在R的tidymodels框架中查看交叉验证折叠内的数据?
在tidymodels中访问、查看和绘制分层交叉验证折叠的数据
当然可以,下面是具体操作方法:
1. 访问单个折叠的训练/测试数据
vfold_cv生成的对象里,splits列存储了每个折叠的训练集与测试集拆分。你可以用training()和testing()函数直接提取对应数据:
# 提取第一个折叠的训练集 first_fold_train <- training(df_cv$splits[[1]]) # 提取第一个折叠的测试集 first_fold_test <- testing(df_cv$splits[[1]])
2. 查看所有折叠的数据分布
如果想一次性查看所有折叠的训练/测试集数据,可借助purrr工具将拆分数据整理成结构化数据框:
# 整理所有训练集,添加折叠编号 all_train_data <- df_cv %>% mutate(train_data = map(splits, training)) %>% unnest(train_data) %>% rename(fold = id) # 整理所有测试集,添加折叠编号 all_test_data <- df_cv %>% mutate(test_data = map(splits, testing)) %>% unnest(test_data) %>% rename(fold = id) # 查看某一折叠的训练集物种分布 all_train_data %>% filter(fold == "Fold01") %>% count(Species)
3. 绘制折叠数据的分布(验证分层效果)
用ggplot绘制每个折叠中目标变量(此处为Species)的分布,可确认分层交叉验证是否保持了类别比例:
# 绘制训练集中各折叠的物种分布 all_train_data %>% ggplot(aes(x = Species, fill = Species)) + geom_bar() + facet_wrap(~fold) + theme_bw() + labs(title = "各折叠训练集的物种分布", x = "物种", y = "数量") # 绘制测试集中各折叠的物种分布 all_test_data %>% ggplot(aes(x = Species, fill = Species)) + geom_bar() + facet_wrap(~fold) + theme_bw() + labs(title = "各折叠测试集的物种分布", x = "物种", y = "数量")
通过这些操作,你能清晰查看每个折叠内的数据情况,同时验证分层采样是否有效保证了各折叠中物种比例的一致性。
内容的提问来源于stack exchange,提问作者jaykay
相关产品推荐
相关产品推荐

