当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R recipes step_novel 新因子水平的简单赋值


step_novel() 创建配方步骤的规范,该步骤会将以前未见过的因子级别分配给 "new"

用法

step_novel(
  recipe,
  ...,
  role = NA,
  trained = FALSE,
  new_level = "new",
  objects = NULL,
  skip = FALSE,
  id = rand_id("novel")
)

参数

recipe

一个菜谱对象。该步骤将添加到此配方的操作序列中。

...

一个或多个选择器函数用于为此步骤选择变量。有关更多详细信息,请参阅selections()

role

由于没有创建新变量,因此此步骤未使用。

trained

指示预处理数量是否已估计的逻辑。

new_level

将分配给新因子级别的单个字符值。

objects

包含由 prep() 确定的因子级别信息的对象列表。

skip

一个合乎逻辑的。当bake() 烘焙食谱时是否应该跳过此步骤?虽然所有操作都是在 prep() 运行时烘焙的,但某些操作可能无法对新数据进行(例如处理结果变量)。使用skip = TRUE时应小心,因为它可能会影响后续操作的计算。

id

该步骤特有的字符串,用于标识它。

recipe 的更新版本,将新步骤添加到任何现有操作的序列中。

细节

所选变量被调整为具有放置在最后位置的新级别(由 new_level 给出)。在准备过程中,不会有与此新关卡相关的数据点,因为所有数据均已查看。

请注意,如果原始列是字符,则通过此步骤它们将转换为因子。

缺失值将保持缺失状态。

如果 new_level 已存在于提供给 prep 的数据中,则会引发错误。

当拟合可以处理新因子水平的模型时,请考虑使用 workflows::add_recipe()hardhat::default_recipe_blueprint() 中设置的 allow_novel_levels = TRUE 。这将使您的模型能够在预测时处理新的级别,而不是抛出警告或错误。

整理

当您 tidy() 此步骤时,将返回包含列 terms(将受影响的列)和 value(用于新值的因子级别)的 tibble。

箱重

底层操作不允许使用案例权重。

例子

data(Sacramento, package = "modeldata")

sacr_tr <- Sacramento[1:800, ]
sacr_te <- Sacramento[801:806, ]
sacr_te$city[3] <- "beeptown"
#> Warning: invalid factor level, NA generated
sacr_te$city[4] <- "boopville"
#> Warning: invalid factor level, NA generated

rec <- recipe(~ city + zip, data = sacr_tr)

rec <- rec %>%
  step_novel(city, zip)
rec <- prep(rec, training = sacr_tr)

processed <- bake(rec, sacr_te)
tibble(old = sacr_te$city, new = processed$city)
#> # A tibble: 6 × 2
#>   old        new       
#>   <fct>      <fct>     
#> 1 SACRAMENTO SACRAMENTO
#> 2 AUBURN     AUBURN    
#> 3 NA         NA        
#> 4 NA         NA        
#> 5 SACRAMENTO SACRAMENTO
#> 6 ROSEVILLE  ROSEVILLE 

tidy(rec, number = 1)
#> # A tibble: 2 × 3
#>   terms value id         
#>   <chr> <chr> <chr>      
#> 1 city  new   novel_3AY0w
#> 2 zip   new   novel_3AY0w
源代码:R/novel.R

相关用法


注:本文由纯净天空筛选整理自Max Kuhn等大神的英文原创作品 Simple Value Assignments for Novel Factor Levels。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。