如何在 Tidymodels 中使用配方包指定响应

How to specify response using recipe package in Tidymodels

我正在创建一个配方,以便我首先创建一个名为“response”的计算列:

rec <- recipe( ~., data = training) %>%
  step_mutate(response = as.integer(all(c('A', 'B') %in% Col4) & Col4 == 'A'))

我现在想将这个新的计算列指定为 recipe() 函数中的响应变量,如下所示。我将对其进行一系列操作,例如第一个 step_naomit。我如何将我在 recipe() 中的响应重新指定为我使用 recipes 的上一步(以上)的计算列?

recipe <- recipe(response ~ ., data = training) %>%
          step_naomit(recipe, response)

您可以通过显式设置 role= 参数来为 step_mutate() 函数中的新列设置角色。

rec <- recipe( ~., data = iris) %>%
  step_mutate(SepalSquared= Sepal.Length ^ 2, role="outcome")

然后检查它是否适用于 summary(prep(rec))

  variable     type    role      source  
  <chr>        <chr>   <chr>     <chr>   
1 Sepal.Length numeric predictor original
2 Sepal.Width  numeric predictor original
3 Petal.Length numeric predictor original
4 Petal.Width  numeric predictor original
5 Species      nominal predictor original
6 SepalSquared numeric outcome   derived 

这与

有关

通常不建议修改食谱中的响应。这是因为在某些情况下响应变量对配方不可用,例如使用 {tune} 时。我建议您在将数据传递给配方之前执行此转换。如果你在验证拆分之前这样做就更好了。

set.seed(1234)
data_split <-  my_data %>%
  step_mutate(response = as.integer(all(c('A', 'B') %in% Col4) & Col4 == 'A')) %>%
  initial_split()

training <- training(data_split)
testing <- testing(data_split)

rec <- recipe(response ~., data = training)