当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R recipes step_dummy 创建传统的虚拟变量


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

该步骤特有的字符串,用于标识它。

recipe 的更新版本,将新步骤添加到任何现有操作的序列中。

细节

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。

箱重

底层操作不允许使用案例权重。

例子

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/dummy.R

相关用法


注:本文由纯净天空筛选整理自Max Kuhn等大神的英文原创作品 Create traditional dummy variables。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。