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

拟合tidymodels工作流时,如何传递retain参数?

在tidymodels工作流中传递prep()的retain=TRUE参数

要解决这个报错,你可以通过两种方式在工作流中给prep()传递retain=TRUE参数:

  • 提前预处理recipe:在定义recipe时直接调用prep()并指定参数,再将处理好的recipe加入工作流
library(tidymodels)
mod <- linear_reg()
rec <- recipe(displ ~ cyl + drv, data=mpg)  %>%
  step_filter(drv != "r") %>%
  prep(retain = TRUE)
wf <- workflow() %>% add_model(mod) %>% add_recipe(rec)
fitted <- wf %>% fit(data=mpg)
# 提取预处理后的训练数据
fitted %>% extract_recipe() %>% bake(new_data = NULL)
  • 通过workflow的options传递:在add_recipe()时使用options参数,把参数传递给工作流内部调用的prep(),这种方式更贴合workflow的推荐用法
library(tidymodels)
mod <- linear_reg()
rec <- recipe(displ ~ cyl + drv, data=mpg)  %>%
  step_filter(drv != "r")
wf <- workflow() %>% 
  add_model(mod) %>% 
  add_recipe(rec, options = list(retain = TRUE))
fitted <- wf %>% fit(data=mpg)
# 提取预处理后的训练数据
fitted %>% extract_recipe() %>% bake(new_data = NULL)

报错的核心原因是:工作流默认调用prep()时未设置retain=TRUE,导致预处理后的训练数据没有被存储,无法通过bake(new_data = NULL)提取。上述两种方法都能让prep()存储训练数据,从而解决报错问题。

内容的提问来源于stack exchange,提问作者Jarkko Toivonen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 01:20:05