Managing both a 'parsnip' model and a preprocessor, such as a
model formula or recipe from 'recipes', can often be challenging. The goal
of 'workflows' is to streamline this process by bundling the model alongside
the preprocessor, all within the same object.
What is a workflow?
A workflow is an object that can bundle together your pre-processing,
modeling, and post-processing requests. For example, if you have a
parsnip model, these can be combined into a workflow. The
You don’t have to keep track of separate objects in your workspace.
The recipe prepping and model fitting can be executed using a single call to
If you have custom tuning parameter settings, these can be defined using a simpler interface when combined with tune.
In the future, workflows will be able to add post-processing operations, such as modifying the probability cutoff for two-class models.
You can install workflows from CRAN with:
You can install the development version from GitHub with:
# install.packages("devtools") devtools::install_github("tidymodels/workflows")
Suppose you were modeling data on cars. Say…the fuel efficiency of 32 cars. You know that the relationship between engine displacement and miles-per-gallon is nonlinear, and you would like to model that as a spline before adding it to a Bayesian linear regression model. You might have a recipe to specify the spline:
library(recipes) library(parsnip) library(workflows) spline_cars <- recipe(mpg ~ ., data = mtcars) %>% step_ns(disp, deg_free = 10)
and a model object:
bayes_lm <- linear_reg() %>% set_engine("stan")
To use these, you would generally run:
spline_cars_prepped <- prep(spline_cars, mtcars) bayes_lm_fit <- fit(bayes_lm, mpg ~ ., data = juice(spline_cars_prepped))
You can’t predict on new samples using
bayes_lm_fit without the
prepped version of
spline_cars around. You also might have other
models and recipes in your workspace. This might lead to getting them
mixed-up or forgetting to save the model/recipe pair that you are most
workflows makes this easier by combining these objects together:
car_wflow <- workflow() %>% add_recipe(spline_cars) %>% add_model(bayes_lm)
Now you can prepare the recipe and estimate the model via a single call
car_wflow_fit <- fit(car_wflow, data = mtcars)
You can alter existing workflows using
This project is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms.
For questions and discussions about tidymodels packages, modeling, and machine learning, please post on RStudio Community.
If you think you have encountered a bug, please submit an issue.
Either way, learn how to create and share a reprex (a minimal, reproducible example), to clearly communicate about your code.
Functions in workflows
|add_formula||Add formula terms to a workflow|
|workflow-extractors||Extract elements of a workflow|
|add_recipe||Add a recipe to a workflow|
|fit-workflow||Fit a workflow object|
|predict-workflow||Predict from a workflow|
|control_workflow||Control object for a workflow|
|add_model||Add a model to a workflow|
|add_variables||Add variables to a workflow|
|workflow||Create a workflow|
|tidy.workflow||Tidy a workflow|
|workflows-internals||Internal workflow functions|
|workflows-package||workflows: Modeling Workflows|
Vignettes of workflows
Last month downloads
|License||MIT + file LICENSE|
|Packaged||2020-10-08 19:44:57 UTC; davis|
|Date/Publication||2020-10-08 20:10:03 UTC|
Include our badge in your README