You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 22:27:20