在 tidymodels 中从 rsample 实现 loo_cv
Implementing loo_cv from rsample in tidymodels
我是 tidymodels 语法的新手,想在 tidymodel 框架中使用来自 rsample 的 loo_cv
实现留一法交叉验证。但是,实现似乎与 vfold_cv
不同,我找不到任何实现 loo_cv
的有用示例。是的,我查看了帮助页面中的示例
我想从 fit_resamples()
帮助页面模拟类似的工作流类型,但我找不到 loo_cv
的类似示例。用 loo_cv
修改下面的代码通知我 fit_resamples
不支持 loo_cv
但我不知道什么支持它。我认为正确的解决方案将涉及 fit_split()
,但我也无法让它发挥作用。尽管我认为解决方案会非常简单,但我已经谷歌搜索并生成错误消息数小时。预先感谢您的指导!
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
以下代码有效,但我认为它并没有真正体现 tidymodels 方法的效率或效用。仍然希望有更好的建议。
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)
我们并不真正支持 tidymodels 中的 LOO。这是一种相当不推荐使用的方法,您最好使用 bootstrap 或多次重复 10 倍 CV。
我们将来可能会使用它,但从支持的角度来看,该方法的开销相当高(因为它的行为不同于所有其他方法)。我们现在宁愿花时间在其他缺失的功能上。
我是 tidymodels 语法的新手,想在 tidymodel 框架中使用来自 rsample 的 loo_cv
实现留一法交叉验证。但是,实现似乎与 vfold_cv
不同,我找不到任何实现 loo_cv
的有用示例。是的,我查看了帮助页面中的示例
我想从 fit_resamples()
帮助页面模拟类似的工作流类型,但我找不到 loo_cv
的类似示例。用 loo_cv
修改下面的代码通知我 fit_resamples
不支持 loo_cv
但我不知道什么支持它。我认为正确的解决方案将涉及 fit_split()
,但我也无法让它发挥作用。尽管我认为解决方案会非常简单,但我已经谷歌搜索并生成错误消息数小时。预先感谢您的指导!
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
以下代码有效,但我认为它并没有真正体现 tidymodels 方法的效率或效用。仍然希望有更好的建议。
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)
我们并不真正支持 tidymodels 中的 LOO。这是一种相当不推荐使用的方法,您最好使用 bootstrap 或多次重复 10 倍 CV。
我们将来可能会使用它,但从支持的角度来看,该方法的开销相当高(因为它的行为不同于所有其他方法)。我们现在宁愿花时间在其他缺失的功能上。