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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。