Site icon R-bloggers

Creating and Predicting Fast Regression Parsnip Models with {tidyAML}

[This article was first published on Steve's Data Tips and Tricks, and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
< section id="introduction" class="level1">

Introduction

I am almost ready for a first release of my R package {tidyAML}. The purpose of this is to act as a way of quickly generating models using the parsnip package and keeping things inside of the tidymodels framework allowing users to seamlessly create models in tidyAML but pluck and move them over to tidymodels should they prefer. This is because I believe that software should be interchangeable and work well with other libraries. Today I am going to showcase how the function fast_regression()

< section id="function" class="level1">

Function

Let’s take a look at the function.

fast_regression(
  .data,
  .rec_obj,
  .parsnip_fns = "all",
  .parsnip_eng = "all",
  .split_type = "initial_split",
  .split_args = NULL
)

Here are the arguments to the function:

< section id="example" class="level1">

Example

Let’s take a look at an example.

library(tidyAML)
library(dplyr)
library(recipes)
library(purrr)

rec_obj <- recipe(mpg ~ ., data = mtcars)
fast_reg_tbl <- fast_regression(
  .data = mtcars,
  .rec_obj = rec_obj,
  .parsnip_eng = c("lm","glm"),
  .parsnip_fns = "linear_reg"
)

glimpse(fast_reg_tbl)
Rows: 2
Columns: 8
$ .model_id       <int> 1, 2
$ .parsnip_engine <chr> "lm", "glm"
$ .parsnip_mode   <chr> "regression", "regression"
$ .parsnip_fns    <chr> "linear_reg", "linear_reg"
$ model_spec      <list> [~NULL, ~NULL, NULL, regression, TRUE, NULL, lm, TRUE]…
$ wflw            <list> [cyl, disp, hp, drat, wt, qsec, vs, am, gear, carb, mp…
$ fitted_wflw     <list> [cyl, disp, hp, drat, wt, qsec, vs, am, gear, carb, mp…
$ pred_wflw       <list> [<tbl_df[24 x 1]>], [<tbl_df[24 x 1]>]

Let’s take a look at the model spec.

fast_reg_tbl %>% slice(1) %>% pull(model_spec) %>% pluck(1)
Linear Regression Model Specification (regression)

Computational engine: lm 

Now the wflw column.

fast_reg_tbl %>% slice(1) %>% pull(wflw) %>% pluck(1)
══ Workflow ════════════════════════════════════════════════════════════════════
Preprocessor: Recipe
Model: linear_reg()

── Preprocessor ────────────────────────────────────────────────────────────────
0 Recipe Steps

── Model ───────────────────────────────────────────────────────────────────────
Linear Regression Model Specification (regression)

Computational engine: lm 

The Fitted workflow.

fast_reg_tbl %>% slice(1) %>% pull(fitted_wflw) %>% pluck(1)
══ Workflow [trained] ══════════════════════════════════════════════════════════
Preprocessor: Recipe
Model: linear_reg()

── Preprocessor ────────────────────────────────────────────────────────────────
0 Recipe Steps

── Model ───────────────────────────────────────────────────────────────────────

Call:
stats::lm(formula = ..y ~ ., data = data)

Coefficients:
(Intercept)          cyl         disp           hp         drat           wt  
 -15.077267     1.107474     0.001161    -0.001014     4.010199    -1.280324  
       qsec           vs           am         gear         carb  
   0.512318    -0.488014     2.430052     4.353568    -2.546043  

And lastly tne predicted workflow column.

fast_reg_tbl %>% slice(1) %>% pull(pred_wflw) %>% pluck(1)
# A tibble: 24 × 1
   .pred
   <dbl>
 1  24.7
 2  28.2
 3  18.9
 4  12.0
 5  14.8
 6  15.4
 7  14.7
 8  20.0
 9  11.2
10  19.1
# … with 14 more rows

Voila!

To leave a comment for the author, please follow the link and comment on their blog: Steve's Data Tips and Tricks.

R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.