Использование fit_xy () для cross_validation в Tidy Models

Я новичок в Tidy Models, и мне он пока нравится, но у меня есть вопрос об использовании интерфейса без формул для повторной выборки / перекрестной проверки. Как я понимаю до сих пор, чтобы применить resampling () / cross validation, я должен написать

  • рецепт с формулой: исход ~ предикторы

    rf_rec <- 
        recipe(y_graduated ~ ., 
               data = trainDat_predSet)

  • указать модель

    # Setting Random Forest Model Specifications
        rf_model <-
          rand_forest() %>%
          set_engine("ranger") %>%
          set_mode("classification") %>%
          set_args(mtry = 3, 
                   trees = 50,
                   min_n = 5)

  • создавать складки

    set.seed(1234)
    trainDatFolds <- 
      rsample::vfold_cv(data = trainDat, v = 5)

  • включить рецепт и спецификацию модели в рабочий процесс

    rf_workflow <- 
      workflow() %>%
      add_recipe(rf_rec) %>%
      add_model(rf_model)

  • Потом подгоните ресэмплинг.

    rf_workflow %>% 
      fit_resamples(resamples = trainDatFolds,
                    metrics = metric_set(roc_auc, pr_auc, accuracy),
                    control = control_resamples(save_pred = TRUE)
      )

Для моих целей гораздо удобнее иметь возможность использовать неформульный интерфейс предикторов результата.

Без шага рецепта и если я выполнял повторную выборку подгонки, я мог бы легко использовать функцию - fit_xy (), чтобы указать набор y-результата и x-предиктора.

Это вариант для повторной выборки?

Большое спасибо!


person Zarni    schedule 06.11.2020    source источник


Ответы (1)


Нет интерфейса x / y, но есть простой способ добраться туда без формулы:

library(recipes)

rec <- recipe(mtcars)
summary(rec)
#> # A tibble: 11 x 4
#>    variable type    role  source  
#>    <chr>    <chr>   <lgl> <chr>   
#>  1 mpg      numeric NA    original
#>  2 cyl      numeric NA    original
#>  3 disp     numeric NA    original
#>  4 hp       numeric NA    original
#>  5 drat     numeric NA    original
#>  6 wt       numeric NA    original
#>  7 qsec     numeric NA    original
#>  8 vs       numeric NA    original
#>  9 am       numeric NA    original
#> 10 gear     numeric NA    original
#> 11 carb     numeric NA    original

# now add roles
rec <- 
  rec %>% 
  update_role(mpg, new_role = "outcome") %>% 
  update_role(-mpg, new_role = "predictor") 
summary(rec)
#> # A tibble: 11 x 4
#>    variable type    role      source  
#>    <chr>    <chr>   <chr>     <chr>   
#>  1 mpg      numeric outcome   original
#>  2 cyl      numeric predictor original
#>  3 disp     numeric predictor original
#>  4 hp       numeric predictor original
#>  5 drat     numeric predictor original
#>  6 wt       numeric predictor original
#>  7 qsec     numeric predictor original
#>  8 vs       numeric predictor original
#>  9 am       numeric predictor original
#> 10 gear     numeric predictor original
#> 11 carb     numeric predictor original

Создано 06.11.2020 с помощью пакета REPEX (v0.3.0)

person topepo    schedule 06.11.2020
comment
Большое спасибо, @topepo (Макс !!) Очень признателен! - person Zarni; 06.11.2020