step_dummy_extract()
创建配方步骤的规范,该步骤将标称数据(例如字符或因子)转换为提取级别的一个或多个整数模型项。
用法
step_dummy_extract(
recipe,
...,
role = "predictor",
trained = FALSE,
sep = NULL,
pattern = NULL,
threshold = 0,
other = "other",
naming = dummy_extract_names,
levels = NULL,
keep_original_cols = FALSE,
skip = FALSE,
id = rand_id("dummy_extract")
)
参数
- recipe
-
一个菜谱对象。该步骤将添加到此配方的操作序列中。
- ...
-
一个或多个选择器函数用于为此步骤选择变量。有关更多详细信息,请参阅
selections()
。 - role
-
由于没有创建新变量,因此此步骤未使用。
- trained
-
指示预处理数量是否已估计的逻辑。
- sep
-
包含用于拆分的正则表达式的字符向量。
strsplit()
用于执行拆分。如果还指定了pattern
,则sep
优先。 - pattern
-
包含用于提取的正则表达式的字符向量。
gregexpr()
和regmatches()
用于使用perl = TRUE
执行模式提取。 - threshold
-
0 到 1 之间的数值,或者大于或等于 1 的整数。如果小于 1,则训练集中出现率低于
threshold
的因子级别将被汇集到other
。如果大于或等于 1,则该值被视为频率,出现次数少于threshold
的因子水平将被汇集到other
。 - other
-
"other" 类别的单个字符值。
- naming
-
定义新虚拟列的命名约定的函数。请参阅下面的详细信息。
- levels
-
包含为
terms
中包含的每个变量创建虚拟变量所需的信息的列表。在prep()
训练该步骤之前,这是NULL
。 - keep_original_cols
-
将原始变量保留在输出中的逻辑。默认为
FALSE
。 - skip
-
一个合乎逻辑的。当
bake()
烘焙食谱时是否应该跳过此步骤?虽然所有操作都是在prep()
运行时烘焙的,但某些操作可能无法对新数据进行(例如处理结果变量)。使用skip = TRUE
时应小心,因为它可能会影响后续操作的计算。 - id
-
该步骤特有的字符串,用于标识它。
细节
step_dummy_extract()
将从字符变量创建一组整数虚拟变量,方法是通过拆分或提取来提取单个字符串,然后对这些字符串进行计数以创建计数变量。
请注意,threshold
在此步骤中以非常特定的方式工作。虽然一个标签可以在同一行中出现多次,但在计算出现次数和频率时只会计算一次。
此配方步骤允许对结果变量进行灵活命名。对于名为 x
且级别为 "a"
和 "b"
的无序因子,默认命名约定是创建一个名为 x_b
的新变量。可以使用naming
参数更改命名格式;函数 dummy_names()
是默认函数。
整理
当您tidy()
此步骤时,将返回一个包含列terms
(选择的选择器或原始变量)和columns
(相应列的列表)的tibble。 columns
根据训练数据集中的频率进行排序。
箱重
此步骤执行可以利用案例权重的无监督操作。因此,个案权重仅与频率权重一起使用。有关更多信息,请参阅 case_weights 中的文档和 tidymodels.org
中的示例。
也可以看看
其他虚拟变量和编码步骤:step_bin2factor()
, step_count()
, step_date()
, step_dummy_multi_choice()
, step_dummy()
, 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(tate_text, package = "modeldata")
dummies <- recipe(~ artist + medium, data = tate_text) %>%
step_dummy_extract(artist, medium, sep = ", ") %>%
prep()
dummy_data <- bake(dummies, new_data = NULL)
dummy_data %>%
select(starts_with("medium")) %>%
names() %>%
head()
#> [1] "medium_X1.person"
#> [2] "medium_X1.projection.and.1.monitor"
#> [3] "medium_X100.digital.prints.on.paper"
#> [4] "medium_X100.works.on.paper"
#> [5] "medium_X11.photographs"
#> [6] "medium_X11.works.on.panel"
# More detailed splitting
dummies_specific <- recipe(~medium, data = tate_text) %>%
step_dummy_extract(medium, sep = "(, )|( and )|( on )") %>%
prep()
dummy_data_specific <- bake(dummies_specific, new_data = NULL)
dummy_data_specific %>%
select(starts_with("medium")) %>%
names() %>%
head()
#> [1] "medium_X1.monitor" "medium_X1.person"
#> [3] "medium_X1.projection" "medium_X10.light.boxes"
#> [5] "medium_X10.tranformers" "medium_X100.digital.prints"
tidy(dummies, number = 1)
#> # A tibble: 2,673 × 3
#> terms columns id
#> <chr> <chr> <chr>
#> 1 artist Thomas dummy_extract_mbqAp
#> 2 artist Schütte dummy_extract_mbqAp
#> 3 artist John dummy_extract_mbqAp
#> 4 artist Akram dummy_extract_mbqAp
#> 5 artist Zaatari dummy_extract_mbqAp
#> 6 artist Joseph dummy_extract_mbqAp
#> 7 artist Beuys dummy_extract_mbqAp
#> 8 artist Richard dummy_extract_mbqAp
#> 9 artist Ferrari dummy_extract_mbqAp
#> 10 artist León dummy_extract_mbqAp
#> # ℹ 2,663 more rows
tidy(dummies_specific, number = 1)
#> # A tibble: 1,216 × 3
#> terms columns id
#> <chr> <chr> <chr>
#> 1 medium paper dummy_extract_oEGyP
#> 2 medium Etching dummy_extract_oEGyP
#> 3 medium Photograph dummy_extract_oEGyP
#> 4 medium colour dummy_extract_oEGyP
#> 5 medium gelatin silver print dummy_extract_oEGyP
#> 6 medium Screenprint dummy_extract_oEGyP
#> 7 medium Lithograph dummy_extract_oEGyP
#> 8 medium on paper dummy_extract_oEGyP
#> 9 medium canvas dummy_extract_oEGyP
#> 10 medium aquatint dummy_extract_oEGyP
#> # ℹ 1,206 more rows
# pattern argument can be useful to extract harder patterns
color_examples <- tibble(
colors = c(
"['red', 'blue']",
"['red', 'blue', 'white']",
"['blue', 'blue', 'blue']"
)
)
dummies_color <- recipe(~colors, data = color_examples) %>%
step_dummy_extract(colors, pattern = "(?<=')[^',]+(?=')") %>%
prep()
dommies_data_color <- dummies_color %>%
bake(new_data = NULL)
dommies_data_color
#> # A tibble: 3 × 4
#> colors_blue colors_red colors_white colors_other
#> <int> <int> <int> <int>
#> 1 1 1 0 0
#> 2 1 1 1 0
#> 3 3 0 0 0
相关用法
- R recipes step_dummy_multi_choice 一起处理多个预测变量的水平
- R recipes step_dummy 创建传统的虚拟变量
- 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等大神的英文原创作品 Extract patterns from nominal data。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。