These functions extract various elements from a tune object. If they do not exist yet, an error is thrown.
extract_preprocessor() returns
the formula, recipe, or variable
expressions used for preprocessing.
extract_spec_parsnip() returns
the parsnip model specification.
extract_fit_parsnip() returns the
parsnip model fit object.
extract_fit_engine() returns the
engine specific fit embedded within
a parsnip model fit. For example, when using parsnip::linear_reg()
with the "lm" engine, this returns the underlying lm object.
extract_mold() returns the preprocessed
"mold" object returned
from hardhat::mold(). It contains information about the preprocessing,
including either the prepped recipe, the formula terms object, or
variable selectors.
extract_recipe() returns the recipe.
The estimated argument specifies
whether the fitted or original recipe is returned.
extract_workflow() returns the
workflow object if the control option
save_workflow = TRUE was used. The workflow will only have been
estimated for objects produced by last_fit().
# S3 method for class 'last_fit'
extract_workflow(x, ...)
# S3 method for class 'tune_results'
extract_workflow(x, ...)
# S3 method for class 'tune_results'
extract_spec_parsnip(x, ...)
# S3 method for class 'tune_results'
extract_recipe(x, ..., estimated = TRUE)
# S3 method for class 'tune_results'
extract_fit_parsnip(x, ...)
# S3 method for class 'tune_results'
extract_fit_engine(x, ...)
# S3 method for class 'tune_results'
extract_mold(x, ...)
# S3 method for class 'tune_results'
extract_preprocessor(x, ...)The extracted value from the tune tune_results, x, as described in the
description section.
These functions supersede extract_model().
# example code
library(recipes)
library(rsample)
library(parsnip)
set.seed(6735)
tr_te_split <- initial_split(mtcars)
spline_rec <- recipe(mpg ~ ., data = mtcars) |>
step_spline_natural(disp)
lin_mod <- linear_reg() |>
set_engine("lm")
spline_res <- last_fit(lin_mod, spline_rec, split = tr_te_split)
extract_preprocessor(spline_res)
#>
#> ── Recipe ──────────────────────────────────────────────────────────────────────
#>
#> ── Inputs
#> Number of variables by role
#> outcome: 1
#> predictor: 10
#>
#> ── Operations
#> • Natural spline expansion: disp
# The `spec` is the parsnip spec before it has been fit.
# The `fit` is the fitted parsnip model.
extract_spec_parsnip(spline_res)
#> Linear Regression Model Specification (regression)
#>
#> Computational engine: lm
#>
extract_fit_parsnip(spline_res)
#> parsnip model object
#>
#>
#> Call:
#> stats::lm(formula = ..y ~ ., data = data)
#>
#> Coefficients:
#> (Intercept) cyl hp drat wt qsec
#> 72.720897 -4.748011 -0.004591 -3.009161 -3.729979 -0.075139
#> vs am gear carb disp_01 disp_02
#> -3.193673 -1.049969 1.365458 -0.087406 -12.974946 -11.920106
#> disp_03 disp_04 disp_05 disp_06 disp_07 disp_08
#> -3.731118 1.796121 -8.190165 6.461960 -2.387850 2.989175
#> disp_09 disp_10
#> 15.749765 6.123262
#>
extract_fit_engine(spline_res)
#>
#> Call:
#> stats::lm(formula = ..y ~ ., data = data)
#>
#> Coefficients:
#> (Intercept) cyl hp drat wt qsec
#> 72.720897 -4.748011 -0.004591 -3.009161 -3.729979 -0.075139
#> vs am gear carb disp_01 disp_02
#> -3.193673 -1.049969 1.365458 -0.087406 -12.974946 -11.920106
#> disp_03 disp_04 disp_05 disp_06 disp_07 disp_08
#> -3.731118 1.796121 -8.190165 6.461960 -2.387850 2.989175
#> disp_09 disp_10
#> 15.749765 6.123262
#>
# The mold is returned from `hardhat::mold()`, and contains the
# predictors, outcomes, and information about the preprocessing
# for use on new data at `predict()` time.
extract_mold(spline_res)
#> $predictors
#> # A tibble: 24 × 19
#> cyl hp drat wt qsec vs am gear carb disp_01 disp_02 disp_03
#> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 8 205 2.93 5.25 18.0 0 0 3 4 0 0 0
#> 2 4 95 3.92 3.15 22.9 1 0 4 2 3.04e-3 4.71e-1 0.518
#> 3 6 175 3.62 2.77 15.5 0 1 5 6 5.80e-5 3.42e-1 0.636
#> 4 8 245 3.73 3.84 15.4 0 0 3 4 0 0 0
#> 5 4 52 4.93 1.62 18.5 1 1 4 2 1.10e-1 6.66e-4 0
#> 6 8 180 3.07 3.78 18 0 0 3 3 0 0 0
#> 7 8 215 3 5.42 17.8 0 0 3 4 0 0 0
#> 8 8 175 3.15 3.44 17.0 0 0 3 2 0 0 0
#> 9 8 180 3.07 4.07 17.4 0 0 3 3 0 0 0
#> 10 6 110 3.9 2.88 17.0 0 1 4 4 0 6.00e-2 0.748
#> # ℹ 14 more rows
#> # ℹ 7 more variables: disp_04 <dbl>, disp_05 <dbl>, disp_06 <dbl>,
#> # disp_07 <dbl>, disp_08 <dbl>, disp_09 <dbl>, disp_10 <dbl>
#>
#> $outcomes
#> # A tibble: 24 × 1
#> mpg
#> <dbl>
#> 1 10.4
#> 2 22.8
#> 3 19.7
#> 4 13.3
#> 5 30.4
#> 6 15.2
#> 7 10.4
#> 8 18.7
#> 9 16.4
#> 10 21
#> # ℹ 14 more rows
#>
#> $blueprint
#> Recipe blueprint:
#> # Predictors: 10
#> # Outcomes: 1
#> Intercept: FALSE
#> Novel Levels: FALSE
#> Composition: tibble
#>
#>
#> $extras
#> $extras$roles
#> NULL
#>
#>
# A useful shortcut is to extract the fitted recipe from the workflow
extract_recipe(spline_res)
#> ── Recipe ──────────────────────────────────────────────────────────────────────
#>
#> ── Inputs
#> Number of variables by role
#> outcome: 1
#> predictor: 10
#>
#> ── Training information
#> Training data contained 24 data points and no incomplete rows.
#>
#> ── Operations
#> • Natural spline expansion: disp | Trained
# That is identical to
identical(
extract_mold(spline_res)$blueprint$recipe,
extract_recipe(spline_res)
)
#> [1] TRUE