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