step_other()
創建配方步驟的規範,該步驟可能會將不經常出現的值匯集到 "other"
類別中。
用法
step_other(
recipe,
...,
role = NA,
trained = FALSE,
threshold = 0.05,
other = "other",
objects = NULL,
skip = FALSE,
id = rand_id("other")
)
參數
- recipe
-
一個菜譜對象。該步驟將添加到此配方的操作序列中。
- ...
-
一個或多個選擇器函數用於為此步驟選擇變量。有關更多詳細信息,請參閱
selections()
。 - role
-
由於沒有創建新變量,因此此步驟未使用。
- trained
-
指示預處理數量是否已估計的邏輯。
- threshold
-
0 到 1 之間的數值,或者大於或等於 1 的整數。如果小於 1,則訓練集中出現率低於
threshold
的因子級別將被匯集到other
。如果大於或等於 1,則該值被視為頻率,出現次數少於threshold
的因子水平將被匯集到other
。 - other
-
"other" 類別的單個字符值。
- objects
-
包含信息的對象列表,用於池化由
prep()
確定的不常見級別。 - skip
-
一個合乎邏輯的。當
bake()
烘焙食譜時是否應該跳過此步驟?雖然所有操作都是在prep()
運行時烘焙的,但某些操作可能無法對新數據進行(例如處理結果變量)。使用skip = TRUE
時應小心,因為它可能會影響後續操作的計算。 - id
-
該步驟特有的字符串,用於標識它。
細節
計算類別的總體比例(或總計數)。 "other" 類別用於代替訓練集中個體比例(或頻率)小於 threshold
的任何分類級別。
如果未進行池化,則數據不會被修改(盡管字符數據可能會根據 prep()
中的 strings_as_factors
的值更改為因子)。否則,始終會返回具有不同因子級別的因子。
如果 threshold
小於最大類別比例,則除最常見級別之外的所有級別都將折疊到 other
級別。
如果保留的類別包含 other
的值,則會引發錯誤。如果other
在丟棄級別列表中,則不會發生錯誤。
如果不進行合並,新因子水平將轉換為缺失。如果需要合並,它們將被放入另一個類別。
當要處理的數據包含新級別(即不包含在訓練集中)時,會分配另一個類別。
整理
當您tidy()
此步驟時,將返回一個包含列terms
(將受影響的列)和retained
(未拉入"other"的因子水平)的小標題。
箱重
此步驟執行可以利用案例權重的無監督操作。因此,個案權重僅與頻率權重一起使用。有關更多信息,請參閱 case_weights 中的文檔和 tidymodels.org
中的示例。
也可以看看
其他虛擬變量和編碼步驟:step_bin2factor()
, step_count()
, step_date()
, step_dummy_extract()
, step_dummy_multi_choice()
, step_dummy()
, step_factor2string()
, step_holiday()
, step_indicate_na()
, step_integer()
, step_novel()
, step_num2factor()
, step_ordinalscore()
, step_regex()
, step_relevel()
, step_string2factor()
, step_time()
, step_unknown()
, step_unorder()
例子
data(Sacramento, package = "modeldata")
set.seed(19)
in_train <- sample(1:nrow(Sacramento), size = 800)
sacr_tr <- Sacramento[in_train, ]
sacr_te <- Sacramento[-in_train, ]
rec <- recipe(~ city + zip, data = sacr_tr)
rec <- rec %>%
step_other(city, zip, threshold = .1, other = "other values")
rec <- prep(rec, training = sacr_tr)
collapsed <- bake(rec, sacr_te)
table(sacr_te$city, collapsed$city, useNA = "always")
#>
#> ELK_GROVE SACRAMENTO other values <NA>
#> ANTELOPE 0 0 3 0
#> AUBURN 0 0 0 0
#> CAMERON_PARK 0 0 1 0
#> CARMICHAEL 0 0 2 0
#> CITRUS_HEIGHTS 0 0 6 0
#> COOL 0 0 0 0
#> DIAMOND_SPRINGS 0 0 1 0
#> EL_DORADO 0 0 1 0
#> EL_DORADO_HILLS 0 0 4 0
#> ELK_GROVE 16 0 0 0
#> ELVERTA 0 0 1 0
#> FAIR_OAKS 0 0 0 0
#> FOLSOM 0 0 3 0
#> FORESTHILL 0 0 0 0
#> GALT 0 0 2 0
#> GARDEN_VALLEY 0 0 0 0
#> GOLD_RIVER 0 0 1 0
#> GRANITE_BAY 0 0 0 0
#> GREENWOOD 0 0 0 0
#> LINCOLN 0 0 1 0
#> LOOMIS 0 0 0 0
#> MATHER 0 0 0 0
#> MEADOW_VISTA 0 0 0 0
#> NORTH_HIGHLANDS 0 0 4 0
#> ORANGEVALE 0 0 1 0
#> PENRYN 0 0 0 0
#> PLACERVILLE 0 0 1 0
#> POLLOCK_PINES 0 0 0 0
#> RANCHO_CORDOVA 0 0 1 0
#> RANCHO_MURIETA 0 0 1 0
#> RIO_LINDA 0 0 0 0
#> ROCKLIN 0 0 2 0
#> ROSEVILLE 0 0 9 0
#> SACRAMENTO 0 71 0 0
#> WALNUT_GROVE 0 0 0 0
#> WEST_SACRAMENTO 0 0 0 0
#> WILTON 0 0 0 0
#> <NA> 0 0 0 0
tidy(rec, number = 1)
#> # A tibble: 3 × 3
#> terms retained id
#> <chr> <chr> <chr>
#> 1 city ELK_GROVE other_HsPSC
#> 2 city SACRAMENTO other_HsPSC
#> 3 zip z95823 other_HsPSC
# novel levels are also "othered"
tahiti <- Sacramento[1, ]
tahiti$zip <- "a magical place"
bake(rec, tahiti)
#> Warning: There was 1 column that was a factor when the recipe was prepped:
#> 'zip'.
#> This may cause errors when processing new data.
#> # A tibble: 1 × 2
#> city zip
#> <fct> <fct>
#> 1 SACRAMENTO other values
# threshold as a frequency
rec <- recipe(~ city + zip, data = sacr_tr)
rec <- rec %>%
step_other(city, zip, threshold = 2000, other = "other values")
rec <- prep(rec, training = sacr_tr)
tidy(rec, number = 1)
#> # A tibble: 2 × 3
#> terms retained id
#> <chr> <chr> <chr>
#> 1 city SACRAMENTO other_2VUP1
#> 2 zip z95823 other_2VUP1
# compare it to
# sacr_tr %>% count(city, sort = TRUE) %>% top_n(4)
# sacr_tr %>% count(zip, sort = TRUE) %>% top_n(3)
相關用法
- R recipes step_ordinalscore 將序數因子轉換為數值分數
- 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_depth 數據深度
- 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 移動窗口函數
- R recipes step_ica ICA 信號提取
- R recipes step_discretize 離散數值變量
- R recipes step_dummy_multi_choice 一起處理多個預測變量的水平
- R recipes step_lincomb 線性組合濾波器
注:本文由純淨天空篩選整理自Max Kuhn等大神的英文原創作品 Collapse Some Categorical Levels。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。