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
-
該步驟特有的字符串,用於標識它。
細節
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。
也可以看看
其他虛擬變量和編碼步驟:step_bin2factor()
, step_count()
, step_date()
, step_dummy_extract()
, step_dummy_multi_choice()
, step_factor2string()
, step_holiday()
, step_indicate_na()
, step_integer()
, step_novel()
, step_num2factor()
, step_ordinalscore()
, step_other()
, step_regex()
, step_relevel()
, step_string2factor()
, step_time()
, step_unknown()
, step_unorder()
例子
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 recipes step_dummy_multi_choice 一起處理多個預測變量的水平
- R recipes step_dummy_extract 從名義數據中提取模式
- R recipes step_depth 數據深度
- R recipes step_discretize 離散數值變量
- R recipes step_date 日期特征生成器
- R recipes step_unknown 將缺失的類別分配給“未知”
- R recipes step_relu 應用(平滑)修正線性變換
- R recipes step_poly_bernstein 廣義伯恩斯坦多項式基
- R recipes step_impute_knn 通過 k 最近鄰進行插補
- R recipes step_impute_mean 使用平均值估算數值數據
- R recipes step_inverse 逆變換
- R recipes step_pls 偏最小二乘特征提取
- R recipes step_ratio 比率變量創建
- R recipes step_geodist 兩個地點之間的距離
- R recipes step_nzv 近零方差濾波器
- R recipes step_nnmf 非負矩陣分解信號提取
- R recipes step_normalize 中心和比例數值數據
- R recipes step_other 折疊一些分類級別
- R recipes step_harmonic 添加正弦和餘弦項以進行諧波分析
- R recipes step_corr 高相關濾波器
- R recipes step_novel 新因子水平的簡單賦值
- R recipes step_select 使用 dplyr 選擇變量
- R recipes step_regex 檢測正則表達式
- R recipes step_spline_b 基礎樣條
- R recipes step_window 移動窗口函數
注:本文由純淨天空篩選整理自Max Kuhn等大神的英文原創作品 Create traditional dummy variables。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。