當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


R recipes step_interact 創建交互變量


step_interact() 創建配方步驟的規範,該步驟將創建新列,這些新列是兩個或多個變量之間的交互項。

用法

step_interact(
  recipe,
  terms,
  role = "predictor",
  trained = FALSE,
  objects = NULL,
  sep = "_x_",
  keep_original_cols = TRUE,
  skip = FALSE,
  id = rand_id("interact")
)

參數

recipe

一個菜譜對象。該步驟將添加到此配方的操作序列中。

terms

包含交互項的傳統 R 公式。這可以包括 . 和選擇器。有關更多詳細信息,請參閱selections(),並在創建虛擬變量時考慮使用tidyselect::starts_with()

role

對於此步驟創建的模型項,應為其分配什麽分析角色?默認情況下,此步驟根據原始變量創建的新列將用作模型中的預測變量。

trained

指示預處理數量是否已估計的邏輯。

objects

每個單獨交互的 terms 對象列表。

sep

用於說明交互中變量的字符值(例如 var1_x_var2 而不是更傳統的 var1:var2 )。

keep_original_cols

將原始變量保留在輸出中的邏輯。默認為 FALSE

skip

一個合乎邏輯的。當bake() 烘焙食譜時是否應該跳過此步驟?雖然所有操作都是在 prep() 運行時烘焙的,但某些操作可能無法對新數據進行(例如處理結果變量)。使用skip = TRUE時應小心,因為它可能會影響後續操作的計算。

id

該步驟特有的字符串,用於標識它。

recipe 的更新版本,將新步驟添加到任何現有操作的序列中。

細節

step_interact 可以創建變量之間的交互。它主要用於數字數據;在用於交互之前,應該使用 step_dummy() 將分類變量轉換為虛擬變量。

與其他步驟函數不同,terms 參數應該是傳統的 R 模型公式,但不應包含內聯函數(例如 log )。例如,對於預測變量 ABC ,可以使用 ~A:B:C 等公式在變量之間進行三向交互。如果公式包含交互項以外的項(例如 (A+B+C)^3 ),則設計矩陣僅保留交互項。

變量之間的分隔符默認為“_x_”,以便前麵顯示的三向交互將生成名為 A_x_B_x_C 的列。這可以使用 sep 參數進行更改。

當創建虛擬變量並在交互中使用虛擬變量時,選擇器可以幫助簡潔地指定交互。例如,假設使用 step_dummy() 將因子列 X 轉換為虛擬變量 x_2x_3 、...、 x_6 。如果您想要與數字列 z 進行交互,您可以創建一組特定的交互效果(例如 x_2:z + x_3:z 等),或者可以使用 starts_with("x_"):z 。當 prep() 計算此步驟時,starts_with("x_") 解析為 (x_2 + x_3 + x_4 + x_5 + x_6),以便公式現在為 (x_2 + x_3 + x_4 + x_5 + x_6):z 並且創建所有雙向交互。

整理

當您執行 tidy() 這一步時,將返回帶有 terms 列(交互效果)的 tibble。

箱重

底層操作不允許使用案例權重。

例子

data(penguins, package = "modeldata")
penguins <- penguins %>% na.omit()

rec <- recipe(flipper_length_mm ~ ., data = penguins)

int_mod_1 <- rec %>%
  step_interact(terms = ~ bill_depth_mm:bill_length_mm)

# specify all dummy variables succinctly with `starts_with()`
int_mod_2 <- rec %>%
  step_dummy(sex, species, island) %>%
  step_interact(terms = ~ body_mass_g:starts_with("species"))

int_mod_1 <- prep(int_mod_1, training = penguins)
int_mod_2 <- prep(int_mod_2, training = penguins)

dat_1 <- bake(int_mod_1, penguins)
dat_2 <- bake(int_mod_2, penguins)

names(dat_1)
#> [1] "species"                        "island"                        
#> [3] "bill_length_mm"                 "bill_depth_mm"                 
#> [5] "body_mass_g"                    "sex"                           
#> [7] "flipper_length_mm"              "bill_depth_mm_x_bill_length_mm"
names(dat_2)
#>  [1] "bill_length_mm"                  "bill_depth_mm"                  
#>  [3] "body_mass_g"                     "flipper_length_mm"              
#>  [5] "sex_male"                        "species_Chinstrap"              
#>  [7] "species_Gentoo"                  "island_Dream"                   
#>  [9] "island_Torgersen"                "body_mass_g_x_species_Chinstrap"
#> [11] "body_mass_g_x_species_Gentoo"   

tidy(int_mod_1, number = 1)
#> # A tibble: 1 × 2
#>   terms                        id            
#>   <chr>                        <chr>         
#> 1 bill_depth_mm:bill_length_mm interact_IUB7W
tidy(int_mod_2, number = 2)
#> # A tibble: 2 × 2
#>   terms                         id            
#>   <chr>                         <chr>         
#> 1 body_mass_g:species_Chinstrap interact_kM5w7
#> 2 body_mass_g:species_Gentoo    interact_kM5w7
源代碼:R/interact.R

相關用法


注:本文由純淨天空篩選整理自Max Kuhn等大神的英文原創作品 Create Interaction Variables。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。