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


R workflows add_model 將模型添加到工作流程


  • add_model() 將防風草模型添加到工作流程中。

  • remove_model() 刪除模型規範以及任何擬合的模型對象。任何額外的公式也將被刪除。

  • update_model() 首先刪除模型,然後將新規範添加到工作流程中。

用法

add_model(x, spec, ..., formula = NULL)

remove_model(x)

update_model(x, spec, ..., formula = NULL)

參數

x

一個工作流程。

spec

防風草模型規格。

...

這些點用於將來的擴展,並且必須為空。

formula

用於指定模型項的可選公式覆蓋。通常,這些術語是從公式或配方預處理方法中提取的。但是,某些模型(如生存模型和貝葉斯模型)使用公式不是為了預處理,而是為了指定模型的結構。在這些情況下,指定模型結構的公式必須原封不動地傳遞到模型調用本身中。此參數用於這些目的。

x ,使用新模型或已刪除模型進行更新。

細節

add_model() 是構建最小工作流程的必需步驟。

指標變量詳細信息

當您使用模型公式時,R 中的某些建模函數會根據分類數據創建指標/虛擬變量,而有些則不會。當您使用 workflow() 指定並擬合模型時,防風草和工作流程會匹配並重現用戶指定模型的計算引擎的基礎行為。

公式預處理器

在房地產價格modeldata::Sacramento數據集中,type變量具有三個級別:"Residential""Condo""Multi-Family"。此基礎 workflow() 包含通過 add_formula() 添加的公式,用於根據房產類型、平方英尺、床位數量和浴室數量預測房產價格:

set.seed(123)

library(parsnip)
library(recipes)
library(workflows)
library(modeldata)

data("Sacramento")

base_wf <- workflow() %>%
  add_formula(price ~ type + sqft + beds + baths)

第一個模型確實創建了虛擬/指標變量:

lm_spec <- linear_reg() %>%
  set_engine("lm")

base_wf %>%
  add_model(lm_spec) %>%
  fit(Sacramento)
## == Workflow [trained] ================================================
## Preprocessor: Formula
## Model: linear_reg()
## 
## -- Preprocessor ------------------------------------------------------
## price ~ type + sqft + beds + baths
## 
## -- Model -------------------------------------------------------------
## 
## Call:
## stats::lm(formula = ..y ~ ., data = data)
## 
## Coefficients:
##      (Intercept)  typeMulti_Family   typeResidential  
##          32919.4          -21995.8           33688.6  
##             sqft              beds             baths  
##            156.2          -29788.0            8730.0

此 OLS 線性回歸的擬合模型中有五個自變量。使用此模型類型和引擎,房地產的因子預測變量 type 轉換為兩個二元預測變量 typeMulti_FamilytypeResidential 。 (第三種類型,對於公寓,不需要自己的列,因為它是基線水平)。

第二個模型不創建虛擬/指標變量:

rf_spec <- rand_forest() %>%
  set_mode("regression") %>%
  set_engine("ranger")

base_wf %>%
  add_model(rf_spec) %>%
  fit(Sacramento)
## == Workflow [trained] ================================================
## Preprocessor: Formula
## Model: rand_forest()
## 
## -- Preprocessor ------------------------------------------------------
## price ~ type + sqft + beds + baths
## 
## -- Model -------------------------------------------------------------
## Ranger result
## 
## Call:
##  ranger::ranger(x = maybe_data_frame(x), y = y, num.threads = 1,      verbose = FALSE, seed = sample.int(10^5, 1)) 
## 
## Type:                             Regression 
## Number of trees:                  500 
## Sample size:                      932 
## Number of independent variables:  4 
## Mtry:                             2 
## Target node size:                 5 
## Variable importance mode:         none 
## Splitrule:                        variance 
## OOB prediction error (MSE):       7058847504 
## R squared (OOB):                  0.5894647

請注意,該護林員隨機森林的擬合模型中有四個自變量。使用此模型類型和引擎,不會為正在出售的房地產的 type 創建指示變量。基於樹的模型(例如隨機森林模型)可以直接處理因子預測變量,並且不需要任何到數字二進製變量的轉換。

配方預處理器

當您通過 workflow() 指定模型並通過 add_recipe() 指定配方預處理器時,配方控製是否創建虛擬變量;該配方會覆蓋模型計算引擎的任何底層行為。

例子

library(parsnip)

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

regularized_model <- set_engine(lm_model, "glmnet")

workflow <- workflow()
workflow <- add_model(workflow, lm_model)
workflow
#> ══ Workflow ══════════════════════════════════════════════════════════════
#> Preprocessor: None
#> Model: linear_reg()
#> 
#> ── Model ─────────────────────────────────────────────────────────────────
#> Linear Regression Model Specification (regression)
#> 
#> Computational engine: lm 
#> 

workflow <- add_formula(workflow, mpg ~ .)
workflow
#> ══ Workflow ══════════════════════════════════════════════════════════════
#> Preprocessor: Formula
#> Model: linear_reg()
#> 
#> ── Preprocessor ──────────────────────────────────────────────────────────
#> mpg ~ .
#> 
#> ── Model ─────────────────────────────────────────────────────────────────
#> Linear Regression Model Specification (regression)
#> 
#> Computational engine: lm 
#> 

remove_model(workflow)
#> ══ Workflow ══════════════════════════════════════════════════════════════
#> Preprocessor: Formula
#> Model: None
#> 
#> ── Preprocessor ──────────────────────────────────────────────────────────
#> mpg ~ .

fitted <- fit(workflow, data = mtcars)
fitted
#> ══ Workflow [trained] ════════════════════════════════════════════════════
#> Preprocessor: Formula
#> Model: linear_reg()
#> 
#> ── Preprocessor ──────────────────────────────────────────────────────────
#> mpg ~ .
#> 
#> ── Model ─────────────────────────────────────────────────────────────────
#> 
#> Call:
#> stats::lm(formula = ..y ~ ., data = data)
#> 
#> Coefficients:
#> (Intercept)          cyl         disp           hp         drat  
#>    12.30337     -0.11144      0.01334     -0.02148      0.78711  
#>          wt         qsec           vs           am         gear  
#>    -3.71530      0.82104      0.31776      2.52023      0.65541  
#>        carb  
#>    -0.19942  
#> 

remove_model(fitted)
#> ══ Workflow ══════════════════════════════════════════════════════════════
#> Preprocessor: Formula
#> Model: None
#> 
#> ── Preprocessor ──────────────────────────────────────────────────────────
#> mpg ~ .

remove_model(workflow)
#> ══ Workflow ══════════════════════════════════════════════════════════════
#> Preprocessor: Formula
#> Model: None
#> 
#> ── Preprocessor ──────────────────────────────────────────────────────────
#> mpg ~ .

update_model(workflow, regularized_model)
#> ══ Workflow ══════════════════════════════════════════════════════════════
#> Preprocessor: Formula
#> Model: linear_reg()
#> 
#> ── Preprocessor ──────────────────────────────────────────────────────────
#> mpg ~ .
#> 
#> ── Model ─────────────────────────────────────────────────────────────────
#> Linear Regression Model Specification (regression)
#> 
#> Computational engine: glmnet 
#> 
update_model(fitted, regularized_model)
#> ══ Workflow ══════════════════════════════════════════════════════════════
#> Preprocessor: Formula
#> Model: linear_reg()
#> 
#> ── Preprocessor ──────────────────────────────────────────────────────────
#> mpg ~ .
#> 
#> ── Model ─────────────────────────────────────────────────────────────────
#> Linear Regression Model Specification (regression)
#> 
#> Computational engine: glmnet 
#> 

相關用法


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