如何在食谱中添加自定义步骤

how to add custom step in recipe

我想使用自定义转换将我的特征转换为机器学习模型。 我的功能是:

step_customFunc <- function(x){ 1/(max(x+1) -x)}

有没有办法像这样使用配方和 tidymodels 在转换管道中添加它:

model_rec <- recipe(target ~ ., data) %>%
    step_customFunc(all_predictors)

我想您会在这里找到一些文档:https://www.tidymodels.org/learn/develop/recipes/ 在“新步骤定义”下

如果您的自定义函数相当简单,即没有参数,您也可以使用 step_mutate_at() 来应用该函数。与创建新步骤相比,这将大大减少工作量。

library(recipes)
step_customFunc <- function(x){ 1 / (max(x + 1) - x)}

recipe(mpg ~ ., data = mtcars) %>%
  step_mutate_at(all_predictors(), fn = step_customFunc) %>%
  prep() %>%
  bake(new_data = NULL)
#> # A tibble: 32 x 11
#>      cyl    disp      hp  drat    wt  qsec    vs    am  gear  carb   mpg
#>    <dbl>   <dbl>   <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#>  1 0.333 0.00319 0.00442 0.493 0.263 0.134   0.5   1   0.5   0.2    21  
#>  2 0.333 0.00319 0.00442 0.493 0.282 0.145   0.5   1   0.5   0.2    21  
#>  3 0.2   0.00274 0.00412 0.481 0.244 0.189   1     1   0.5   0.125  22.8
#>  4 0.333 0.00465 0.00442 0.351 0.312 0.224   1     0.5 0.333 0.125  21.4
#>  5 1     0.00885 0.00621 0.360 0.335 0.145   0.5   0.5 0.333 0.143  18.7
#>  6 0.333 0.00403 0.00433 0.315 0.337 0.272   1     0.5 0.333 0.125  18.1
#>  7 1     0.00885 0.0110  0.368 0.350 0.124   0.5   0.5 0.333 0.2    14.3
#>  8 0.2   0.00306 0.00365 0.446 0.309 0.256   1     0.5 0.5   0.143  24.4
#>  9 0.2   0.00301 0.00415 0.498 0.305 1       1     0.5 0.5   0.143  22.8
#> 10 0.333 0.00327 0.00469 0.498 0.335 0.179   1     0.5 0.5   0.2    19.2
#> # … with 22 more rows

reprex package (v0.3.0)

于 2021 年 3 月 18 日创建