-
add_model()
将防风草模型添加到工作流程中。 -
remove_model()
删除模型规范以及任何拟合的模型对象。任何额外的公式也将被删除。 -
update_model()
首先删除模型,然后将新规范添加到工作流程中。
用法
add_model(x, spec, ..., formula = NULL)
remove_model(x)
update_model(x, spec, ..., formula = NULL)
参数
- x
-
一个工作流程。
- spec
-
防风草模型规格。
- ...
-
这些点用于将来的扩展,并且必须为空。
- formula
-
用于指定模型项的可选公式覆盖。通常,这些术语是从公式或配方预处理方法中提取的。但是,某些模型(如生存模型和贝叶斯模型)使用公式不是为了预处理,而是为了指定模型的结构。在这些情况下,指定模型结构的公式必须原封不动地传递到模型调用本身中。此参数用于这些目的。
指标变量详细信息
当您使用模型公式时,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_Family
和 typeResidential
。 (第三种类型,对于公寓,不需要自己的列,因为它是基线水平)。
第二个模型不创建虚拟/指标变量:
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
#>
相关用法
- R workflows add_variables 将变量添加到工作流程
- R workflows add_formula 将公式术语添加到工作流程
- R workflows add_recipe 将配方添加到工作流程
- R workflows add_case_weights 将案例权重添加到工作流程
- R workflows augment.workflow 通过预测增强数据
- R workflows workflow 创建工作流程
- R workflows extract-workflow 提取工作流程的元素
- R workflows predict-workflow 从工作流程进行预测
- R workflows glance.workflow 工作流程模型一览
- R workflows is_trained_workflow 确定工作流程是否经过训练
- R workflows fit-workflow 适合工作流对象
- R workflows control_workflow 工作流的控制对象
- R workflowsets extract_workflow_set_result 提取工作流集的元素
- R workflowsets comment_add 为工作流程添加注释和评论
- R workflowsets option_add 添加和编辑工作流程集中保存的选项
- R workflowsets fit_best.workflow_set 将模型拟合到数值最优配置
- R workflowsets leave_var_out_formulas 创建没有每个预测变量的公式
- R workflowsets collect_metrics.workflow_set 获取并格式化通过调整工作流集函数生成的结果
- R workflowsets workflow_map 处理一系列工作流程
- R workflowsets as_workflow_set 将现有对象转换为工作流集
- R workflowsets option_list 制作一个分类的选项列表
- R workflowsets rank_results 按指标对结果进行排名
- R workflowsets workflow_set 从预处理和模型对象生成一组工作流对象
- R workflowsets pull_workflow_set_result 从工作流集中提取元素
- R workflowsets autoplot.workflow_set 绘制工作流程集的结果
注:本文由纯净天空筛选整理自Davis Vaughan等大神的英文原创作品 Add a model to a workflow。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。