首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在tidymodels中从rsample实现loo_cv

在tidymodels中从rsample实现loo_cv
EN

Stack Overflow用户
提问于 2020-07-11 08:40:19
回答 2查看 251关注 0票数 2

我对tidymodels语法是个新手,我想在一个tidymodel框架中使用rsample中的loo_cv来实现leave one one交叉验证。但是,它的实现似乎与vfold_cv不同,我找不到任何实现loo_cv的有用示例。是的,我已经查看了帮助页面中的示例

我想模拟一个类似的工作流类型,如下面的fit_resamples()帮助页面所示,但是我找不到一个类似的loo_cv示例。用loo_cv修改下面的代码会告诉我fit_resamples不支持loo_cv,但我不知道是什么支持它。我假设正确的解决方案将涉及fit_split(),但我也不能让它工作。我已经在谷歌上搜索并生成了几个小时的错误消息,尽管我想解决方案会很简单。提前感谢您的指点!

代码语言:javascript
复制
folds <- vfold_cv(mtcars, v = 5)
#folds <- loo_cv(mtcars) # generates error message with fit_resamples()
spline_rec <- recipe(mpg ~ ., data = mtcars) %>%
step_ns(disp) %>%
step_ns(wt)

lin_mod <- linear_reg() %>%
set_engine("lm")

control <- control_resamples(save_pred = TRUE)

spline_res <- fit_resamples(lin_mod, spline_rec, folds, control = control)

spline_res %>% 
collect_predictions
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-07-21 00:30:16

我们并不真正支持在整洁模型中使用LOO。这是一个相当不受欢迎的方法,你最好使用bootstrap或多次重复10倍的CV。

我们将来可能会使用它,但从支持的角度来看,该方法的开销相当高(因为它的行为与所有其他方法不同)。我们现在宁愿把时间花在其他缺失的功能上。

票数 2
EN

Stack Overflow用户

发布于 2020-07-12 02:13:05

下面的代码可以工作,但我认为它并没有真正捕捉到tidymodels方法的效率或效用。还是想要一个更好的建议。

代码语言:javascript
复制
loocvdat <- loo_cv(mtcars)

lm_spec <- linear_reg() %>% 
set_engine("lm")

splitfun <- function(mysplit){
  fit_split(mpg~.,
        model=lm_spec,
        split=mysplit) %>% 
  collect_predictions}

map(loocvdat$splits,splitfun)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62844003

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档