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


R workflows fit-workflow 适合工作流对象


目前安装工作流程涉及两个主要步骤:

用法

# S3 method for workflow
fit(object, data, ..., control = control_workflow())

参数

object

工作流程

data

拟合工作流程时使用的预测变量和结果的 DataFrame 架

...

未使用

control

control_workflow() 对象

工作流程 object 已在 object$fit$fit 插槽中使用拟合防风草模型进行更新。

细节

将来,模型拟合后还可以添加后处理步骤。

指标变量详细信息

当您使用模型公式时,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)
library(recipes)
library(magrittr)

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

base_wf <- workflow() %>%
  add_model(model)

formula_wf <- base_wf %>%
  add_formula(mpg ~ cyl + log(disp))

fit(formula_wf, mtcars)
#> ══ Workflow [trained] ════════════════════════════════════════════════════
#> Preprocessor: Formula
#> Model: linear_reg()
#> 
#> ── Preprocessor ──────────────────────────────────────────────────────────
#> mpg ~ cyl + log(disp)
#> 
#> ── Model ─────────────────────────────────────────────────────────────────
#> 
#> Call:
#> stats::lm(formula = ..y ~ ., data = data)
#> 
#> Coefficients:
#> (Intercept)          cyl  `log(disp)`  
#>     67.6674      -0.1755      -8.7971  
#> 

recipe <- recipe(mpg ~ cyl + disp, mtcars) %>%
  step_log(disp)

recipe_wf <- base_wf %>%
  add_recipe(recipe)

fit(recipe_wf, mtcars)
#> ══ Workflow [trained] ════════════════════════════════════════════════════
#> Preprocessor: Recipe
#> Model: linear_reg()
#> 
#> ── Preprocessor ──────────────────────────────────────────────────────────
#> 1 Recipe Step
#> 
#> • step_log()
#> 
#> ── Model ─────────────────────────────────────────────────────────────────
#> 
#> Call:
#> stats::lm(formula = ..y ~ ., data = data)
#> 
#> Coefficients:
#> (Intercept)          cyl         disp  
#>     67.6674      -0.1755      -8.7971  
#> 
源代码:R/fit.R

相关用法


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