當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。