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


R workflows add_variables 將變量添加到工作流程


  • add_variables() 通過對 outcomespredictors 使用 tidyselect::select_helpers 來指定模型的項。

  • remove_variables() 刪除變量。此外,如果模型已經擬合,則擬合將被刪除。

  • update_variables() 首先刪除變量,然後用新變量替換以前的變量。任何已經基於原始變量擬合的模型都需要重新擬合。

  • workflow_variables()outcomespredictors 捆綁到單個變量對象中,該對象可以提供給 add_variables()

用法

add_variables(x, outcomes, predictors, ..., blueprint = NULL, variables = NULL)

remove_variables(x)

update_variables(
  x,
  outcomes,
  predictors,
  ...,
  blueprint = NULL,
  variables = NULL
)

workflow_variables(outcomes, predictors)

參數

x

工作流程

outcomes, predictors

Tidyselect 表達式指定模型的項。首先評估outcomes,然後在評估predictors 之前從數據中刪除所有結果列。有關指定術語的全部可能方法,請參閱tidyselect::select_helpers

...

不曾用過。

blueprint

用於微調預處理的安全帽藍圖。

如果使用NULL,則使用hardhat::default_xy_blueprint()

請注意,此處完成的預處理與底層模型可能完成的預處理是分開的。

variables

outcomespredictors 的替代規範,可用於以編程方式提供變量。

  • 如果是NULL,則不使用該參數,並且使用outcomespredictors來指定變量。

  • 否則,這必須是調用 workflow_variables() 創建獨立變量對象的結果。在這種情況下,outcomespredictors 被完全忽略。

  • add_variables() 返回帶有新變量預處理器的x

  • 重置任何模型擬合並刪除變量預處理器後,remove_variables() 返回x

  • 刪除變量預處理器後,update_variables() 返回x,然後用新變量重新指定它。

  • workflow_variables() 返回一個 'workflow_variables' 對象,其中包含 outcomespredictors

細節

要適應工作流程,必須指定 add_formula()add_recipe()add_variables() 之一。

例子

library(parsnip)

spec_lm <- linear_reg()
spec_lm <- set_engine(spec_lm, "lm")

workflow <- workflow()
workflow <- add_model(workflow, spec_lm)

# Add terms with tidyselect expressions.
# Outcomes are specified before predictors.
workflow1 <- add_variables(
  workflow,
  outcomes = mpg,
  predictors = c(cyl, disp)
)

workflow1 <- fit(workflow1, mtcars)
workflow1
#> ══ Workflow [trained] ════════════════════════════════════════════════════
#> Preprocessor: Variables
#> Model: linear_reg()
#> 
#> ── Preprocessor ──────────────────────────────────────────────────────────
#> Outcomes: mpg
#> Predictors: c(cyl, disp)
#> 
#> ── Model ─────────────────────────────────────────────────────────────────
#> 
#> Call:
#> stats::lm(formula = ..y ~ ., data = data)
#> 
#> Coefficients:
#> (Intercept)          cyl         disp  
#>    34.66099     -1.58728     -0.02058  
#> 

# Removing the variables of a fit workflow will also remove the model
remove_variables(workflow1)
#> ══ Workflow ══════════════════════════════════════════════════════════════
#> Preprocessor: None
#> Model: linear_reg()
#> 
#> ── Model ─────────────────────────────────────────────────────────────────
#> Linear Regression Model Specification (regression)
#> 
#> Computational engine: lm 
#> 

# Variables can also be updated
update_variables(workflow1, mpg, starts_with("d"))
#> ══ Workflow ══════════════════════════════════════════════════════════════
#> Preprocessor: Variables
#> Model: linear_reg()
#> 
#> ── Preprocessor ──────────────────────────────────────────────────────────
#> Outcomes: mpg
#> Predictors: starts_with("d")
#> 
#> ── Model ─────────────────────────────────────────────────────────────────
#> Linear Regression Model Specification (regression)
#> 
#> Computational engine: lm 
#> 

# The `outcomes` are removed before the `predictors` expression
# is evaluated. This allows you to easily specify the predictors
# as "everything except the outcomes".
workflow2 <- add_variables(workflow, mpg, everything())
workflow2 <- fit(workflow2, mtcars)
extract_mold(workflow2)$predictors
#> # A tibble: 32 × 10
#>      cyl  disp    hp  drat    wt  qsec    vs    am  gear  carb
#>    <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#>  1     6  160    110  3.9   2.62  16.5     0     1     4     4
#>  2     6  160    110  3.9   2.88  17.0     0     1     4     4
#>  3     4  108     93  3.85  2.32  18.6     1     1     4     1
#>  4     6  258    110  3.08  3.22  19.4     1     0     3     1
#>  5     8  360    175  3.15  3.44  17.0     0     0     3     2
#>  6     6  225    105  2.76  3.46  20.2     1     0     3     1
#>  7     8  360    245  3.21  3.57  15.8     0     0     3     4
#>  8     4  147.    62  3.69  3.19  20       1     0     4     2
#>  9     4  141.    95  3.92  3.15  22.9     1     0     4     2
#> 10     6  168.   123  3.92  3.44  18.3     1     0     4     4
#> # … with 22 more rows

# Variables can also be added from the result of a call to
# `workflow_variables()`, which creates a standalone variables object
variables <- workflow_variables(mpg, c(cyl, disp))
workflow3 <- add_variables(workflow, variables = variables)
fit(workflow3, mtcars)
#> ══ Workflow [trained] ════════════════════════════════════════════════════
#> Preprocessor: Variables
#> Model: linear_reg()
#> 
#> ── Preprocessor ──────────────────────────────────────────────────────────
#> Outcomes: mpg
#> Predictors: c(cyl, disp)
#> 
#> ── Model ─────────────────────────────────────────────────────────────────
#> 
#> Call:
#> stats::lm(formula = ..y ~ ., data = data)
#> 
#> Coefficients:
#> (Intercept)          cyl         disp  
#>    34.66099     -1.58728     -0.02058  
#> 

相關用法


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