【问题标题】:rsample vfold_cv function not accepting .y parameter from purrr::map2rsample vfold_cv 函数不接受来自 purrr::map2 的 .y 参数
【发布时间】:2020-10-19 18:38:32
【问题描述】:

我正在尝试使用rsample 包创建嵌套的交叉验证,并且我使用purrr::map2 多次创建它们,并使用v 参数指定的不同数量的折叠。但是,vfold_cv 函数不接受 v 参数,而是出现此错误:Error: v must be a single integer.

在下面的代表中,我使用mtcars 数据模拟这种情况,方法是为每个圆柱体创建交叉验证。用数字替换.y 是可行的,但我需要使用n 列使参数随每个气缸而变化。

图书馆(咕噜声)
图书馆(欧洲防风草)
库(rsample)
图书馆(tidyr)

数据(“mtcars”)

嵌套 %
    选择(气缸,显示:齿轮)%>%
    group_by(cyl) %>%
    嵌套(数据=显示:齿轮)%>%
    cbind(n = 2:4)

嵌套 %>%
    group_by(cyl) %>%
    变异(cv = map2(数据,n,
                     ~nested_cv(.x,
                                里面= vfold_cv(v = 10,重复= 3),
                                外部 = vfold_cv(v = .y))))

错误:`v` 必须是单个整数。

【问题讨论】:

    标签: r tidyverse cross-validation purrr tidymodels


    【解决方案1】:

    是nested_cv里面的vfold_cv函数,你可以试试:

    createNested = function(x,y){
        nested_cv(x,inside = vfold_cv(v = 10, repeats = 3),outside = vfold_cv(v = y))
    }
    
    createNested(nested$data[[1]],3)
    Error in vfold_splits(data = data, v = v, strata = strata, breaks = breaks) : 
      object 'y' not found
    

    所以它看不到函数内部的y 变量(如您的.y)。所以我写了一个函数,将vfold_cv() for outside 的结果显式传递给nested_cv(),多写几行代码但没关系:

    createNested = function(x,y){
        outside_cv = vfold_cv(x,v = y)
        nested_cv(x,inside = vfold_cv(v = 10, repeats = 3),outside = outside_cv)
    }
    
    nested <- mtcars %>% 
    select(cyl, disp:gear) %>% 
    nest(data = disp:gear) %>%
    mutate(n=2:4)
    
    nested %>%  mutate(cv = map2(data,n,.f=createNested))
    
    # A tibble: 3 x 4
        cyl data                  n cv              
      <dbl> <list>            <int> <list>          
    1     6 <tibble [7 × 8]>      2 <tibble [2 × 3]>
    2     4 <tibble [11 × 8]>     3 <tibble [3 × 3]>
    3     8 <tibble [14 × 8]>     4 <tibble [4 × 3]>
    

    注意,一旦嵌套了数据,就不需要group_by()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-20
      • 2021-06-21
      相关资源
      最近更新 更多