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


R recipes step_dummy 創建傳統的虛擬變量


step_dummy() 創建配方步驟的規範,該步驟將標稱數據(例如字符或因子)轉換為與原始數據級別相對應的一個或多個數字二進製模型項。

用法

step_dummy(
  recipe,
  ...,
  role = "predictor",
  trained = FALSE,
  one_hot = FALSE,
  preserve = deprecated(),
  naming = dummy_names,
  levels = NULL,
  keep_original_cols = FALSE,
  skip = FALSE,
  id = rand_id("dummy")
)

參數

recipe

一個菜譜對象。該步驟將添加到此配方的操作序列中。

...

一個或多個選擇器函數用於為此步驟選擇變量。有關更多詳細信息,請參閱selections()。所選變量必須是因子。

role

對於此步驟創建的模型項,應為其分配什麽分析角色?默認情況下,此步驟根據原始變量創建的新列將用作模型中的預測變量。

trained

指示預處理數量是否已估計的邏輯。

one_hot

一個合乎邏輯的。對於 C 級別,是否應該創建 C 虛擬變量而不是 C-1?

preserve

使用 keep_original_cols 指定是否應保留所選列(除了新的虛擬變量之外)。

naming

定義新虛擬列的命名約定的函數。請參閱下麵的詳細信息。

levels

包含為 terms 中包含的每個變量創建虛擬變量所需的信息的列表。在 prep() 訓練該步驟之前,這是 NULL

keep_original_cols

將原始變量保留在輸出中的邏輯。默認為 FALSE

skip

一個合乎邏輯的。當bake() 烘焙食譜時是否應該跳過此步驟?雖然所有操作都是在 prep() 運行時烘焙的,但某些操作可能無法對新數據進行(例如處理結果變量)。使用skip = TRUE時應小心,因為它可能會影響後續操作的計算。

id

該步驟特有的字符串,用於標識它。

recipe 的更新版本,將新步驟添加到任何現有操作的序列中。

細節

step_dummy() 將從因子變量創建一組二進製虛擬變量。例如,如果數據集中的無序因子列的級別為 "red"、"green"、"blue",則虛擬變量 Baker 將為這三個值中的兩個創建兩個附加的 0/1 數據列(並刪除原始專欄)。對於有序因子,多項式對比用於對數值進行編碼。

默認情況下,排除的虛擬變量(即參考單元格)將對應於正在轉換的無序因子的第一級別。

此配方步驟允許對結果變量進行靈活命名。對於名為 x 且級別為 "a""b" 的無序因子,默認命名約定是創建一個名為 x_b 的新變量。可以使用naming參數更改命名格式;函數 dummy_names() 是默認函數。

要更改所使用的對比度類型,請通過 options 更改全局對比度選項。

當要轉換的因子存在缺失值時,所有相應的虛擬變量也會缺失。請參閱step_unknown() 獲取解決方案。

當要處理的數據包含新水平(即不包含在訓練集中)時,將為結果分配缺失值。請參閱step_other() 作為替代方案。

如果未選擇任何列(可能是由於較早的 step_zv() ),bake() 將按原樣返回數據(例如,沒有虛擬變量)。

請注意,默認情況下,新的虛擬變量列名稱遵循列的命名規則。如果存在諸如 "0" 之類的級別,則 dummy_names() 會將前導 "X" 放在級別前麵(因為它使用 make.names() )。這可以通過向此步驟的 naming 參數傳遞不同的函數來更改。

此外,還有許多返回小數值的對比方法。此步驟返回的列是雙精度數(不是整數)。

package vignette for dummy variables 和交互有更多信息。

整理

當您tidy()此步驟時,將返回一個包含列terms(選擇的選擇器或原始變量)和columns(相應二進製列的列表)的tibble。

箱重

底層操作不允許使用案例權重。

例子

data(Sacramento, package = "modeldata")

# Original data: city has 37 levels
length(unique(Sacramento$city))
#> [1] 37
unique(Sacramento$city) %>% sort()
#>  [1] ANTELOPE        AUBURN          CAMERON_PARK    CARMICHAEL     
#>  [5] CITRUS_HEIGHTS  COOL            DIAMOND_SPRINGS EL_DORADO      
#>  [9] EL_DORADO_HILLS ELK_GROVE       ELVERTA         FAIR_OAKS      
#> [13] FOLSOM          FORESTHILL      GALT            GARDEN_VALLEY  
#> [17] GOLD_RIVER      GRANITE_BAY     GREENWOOD       LINCOLN        
#> [21] LOOMIS          MATHER          MEADOW_VISTA    NORTH_HIGHLANDS
#> [25] ORANGEVALE      PENRYN          PLACERVILLE     POLLOCK_PINES  
#> [29] RANCHO_CORDOVA  RANCHO_MURIETA  RIO_LINDA       ROCKLIN        
#> [33] ROSEVILLE       SACRAMENTO      WALNUT_GROVE    WEST_SACRAMENTO
#> [37] WILTON         
#> 37 Levels: ANTELOPE AUBURN CAMERON_PARK CARMICHAEL ... WILTON

rec <- recipe(~ city + sqft + price, data = Sacramento)

# Default dummy coding: 36 dummy variables
dummies <- rec %>%
  step_dummy(city) %>%
  prep(training = Sacramento)

dummy_data <- bake(dummies, new_data = NULL)

dummy_data %>%
  select(starts_with("city")) %>%
  names() # level "anything" is the reference level
#>  [1] "city_AUBURN"          "city_CAMERON_PARK"    "city_CARMICHAEL"     
#>  [4] "city_CITRUS_HEIGHTS"  "city_COOL"            "city_DIAMOND_SPRINGS"
#>  [7] "city_EL_DORADO"       "city_EL_DORADO_HILLS" "city_ELK_GROVE"      
#> [10] "city_ELVERTA"         "city_FAIR_OAKS"       "city_FOLSOM"         
#> [13] "city_FORESTHILL"      "city_GALT"            "city_GARDEN_VALLEY"  
#> [16] "city_GOLD_RIVER"      "city_GRANITE_BAY"     "city_GREENWOOD"      
#> [19] "city_LINCOLN"         "city_LOOMIS"          "city_MATHER"         
#> [22] "city_MEADOW_VISTA"    "city_NORTH_HIGHLANDS" "city_ORANGEVALE"     
#> [25] "city_PENRYN"          "city_PLACERVILLE"     "city_POLLOCK_PINES"  
#> [28] "city_RANCHO_CORDOVA"  "city_RANCHO_MURIETA"  "city_RIO_LINDA"      
#> [31] "city_ROCKLIN"         "city_ROSEVILLE"       "city_SACRAMENTO"     
#> [34] "city_WALNUT_GROVE"    "city_WEST_SACRAMENTO" "city_WILTON"         

# Obtain the full set of 37 dummy variables using `one_hot` option
dummies_one_hot <- rec %>%
  step_dummy(city, one_hot = TRUE) %>%
  prep(training = Sacramento)

dummy_data_one_hot <- bake(dummies_one_hot, new_data = NULL)

dummy_data_one_hot %>%
  select(starts_with("city")) %>%
  names() # no reference level
#>  [1] "city_ANTELOPE"        "city_AUBURN"          "city_CAMERON_PARK"   
#>  [4] "city_CARMICHAEL"      "city_CITRUS_HEIGHTS"  "city_COOL"           
#>  [7] "city_DIAMOND_SPRINGS" "city_EL_DORADO"       "city_EL_DORADO_HILLS"
#> [10] "city_ELK_GROVE"       "city_ELVERTA"         "city_FAIR_OAKS"      
#> [13] "city_FOLSOM"          "city_FORESTHILL"      "city_GALT"           
#> [16] "city_GARDEN_VALLEY"   "city_GOLD_RIVER"      "city_GRANITE_BAY"    
#> [19] "city_GREENWOOD"       "city_LINCOLN"         "city_LOOMIS"         
#> [22] "city_MATHER"          "city_MEADOW_VISTA"    "city_NORTH_HIGHLANDS"
#> [25] "city_ORANGEVALE"      "city_PENRYN"          "city_PLACERVILLE"    
#> [28] "city_POLLOCK_PINES"   "city_RANCHO_CORDOVA"  "city_RANCHO_MURIETA" 
#> [31] "city_RIO_LINDA"       "city_ROCKLIN"         "city_ROSEVILLE"      
#> [34] "city_SACRAMENTO"      "city_WALNUT_GROVE"    "city_WEST_SACRAMENTO"
#> [37] "city_WILTON"         


tidy(dummies, number = 1)
#> # A tibble: 36 × 3
#>    terms columns         id         
#>    <chr> <chr>           <chr>      
#>  1 city  AUBURN          dummy_ypfCg
#>  2 city  CAMERON_PARK    dummy_ypfCg
#>  3 city  CARMICHAEL      dummy_ypfCg
#>  4 city  CITRUS_HEIGHTS  dummy_ypfCg
#>  5 city  COOL            dummy_ypfCg
#>  6 city  DIAMOND_SPRINGS dummy_ypfCg
#>  7 city  EL_DORADO       dummy_ypfCg
#>  8 city  EL_DORADO_HILLS dummy_ypfCg
#>  9 city  ELK_GROVE       dummy_ypfCg
#> 10 city  ELVERTA         dummy_ypfCg
#> # ℹ 26 more rows
tidy(dummies_one_hot, number = 1)
#> # A tibble: 37 × 3
#>    terms columns         id         
#>    <chr> <chr>           <chr>      
#>  1 city  ANTELOPE        dummy_ONQD4
#>  2 city  AUBURN          dummy_ONQD4
#>  3 city  CAMERON_PARK    dummy_ONQD4
#>  4 city  CARMICHAEL      dummy_ONQD4
#>  5 city  CITRUS_HEIGHTS  dummy_ONQD4
#>  6 city  COOL            dummy_ONQD4
#>  7 city  DIAMOND_SPRINGS dummy_ONQD4
#>  8 city  EL_DORADO       dummy_ONQD4
#>  9 city  EL_DORADO_HILLS dummy_ONQD4
#> 10 city  ELK_GROVE       dummy_ONQD4
#> # ℹ 27 more rows
源代碼:R/dummy.R

相關用法


注:本文由純淨天空篩選整理自Max Kuhn等大神的英文原創作品 Create traditional dummy variables。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。