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

如何从rsample滚动原点分割的评估集提取y最值并跟踪分割ID?

从rsample滚动分割中提取评估集y值最值的tidyverse方案

我们可以通过dplyr与purrr的组合,高效处理rolling_origin生成的滚动分割,提取每个评估集的y值最大/最小值并关联对应分割ID:

完整代码

library(tidyverse)
library(rsample)

# 生成可复现的示例数据
set.seed(123)
dat <- data.frame(x = 1:50, y = runif(50, 0.1, 30))

# 创建滚动分割:初始训练集10条,每次评估集5条
dat_split <- rsample::rolling_origin(dat, initial = 10, assess = 5)

# 提取每个评估集的统计量并整理结果
result <- dat_split %>%
  # 遍历每个分割,提取评估集并计算y的最值
  mutate(assess_stats = map(splits, ~ assessment(.x) %>%
                              summarize(y_min = min(y), y_max = max(y)))) %>%
  # 将嵌套的统计结果展开为扁平表格
  unnest(assess_stats) %>%
  # 保留核心列:分割ID、y最小值、y最大值
  select(id, y_min, y_max)

# 查看前6条结果
head(result)

代码说明

  • map(splits, ~ assessment(.x) %>% ...):遍历dat_split中的每个分割对象,用assessment()函数精准提取评估集数据,再通过summarize计算y的最值
  • unnest(assess_stats):将嵌套在单元格内的统计结果展开,转化为标准的二维表格结构
  • 若需要计算更多统计量(如均值、中位数),只需在summarize中添加对应逻辑即可

替代写法(rowwise风格)

如果偏好更直观的逐行处理逻辑,也可以用rowwise实现:

result_rowwise <- dat_split %>%
  rowwise(id) %>%
  mutate(
    y_min = min(assessment(splits)$y),
    y_max = max(assessment(splits)$y)
  ) %>%
  ungroup() %>%
  select(id, y_min, y_max)

内容的提问来源于stack exchange,提问作者D Kincaid

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 18:40:01