
Fit the final best model to the training set and evaluate the test set
Source:R/last_fit.R
last_fit.Rd
last_fit()
emulates the process where, after determining the best model,
the final fit on the entire training set is needed and is then evaluated on
the test set.
Usage
last_fit(object, ...)
# S3 method for model_spec
last_fit(
object,
preprocessor,
split,
...,
metrics = NULL,
control = control_last_fit(),
add_validation_set = FALSE
)
# S3 method for workflow
last_fit(
object,
split,
...,
metrics = NULL,
control = control_last_fit(),
add_validation_set = FALSE
)
Arguments
- object
A
parsnip
model specification or aworkflows::workflow()
. No tuning parameters are allowed.- ...
Currently unused.
- preprocessor
A traditional model formula or a recipe created using
recipes::recipe()
.- split
An
rsplit
object created fromrsample::initial_split()
orrsample::initial_validation_split()
.- metrics
A
yardstick::metric_set()
, orNULL
to compute a standard set of metrics.- control
A
control_last_fit()
object used to fine tune the last fit process.- add_validation_set
For 3-way splits into training, validation, and test set via
rsample::initial_validation_split()
, should the validation set be included in the data set used to train the model. If not, only the training set is used.
Value
A single row tibble that emulates the structure of fit_resamples()
.
However, a list column called .workflow
is also attached with the fitted
model (and recipe, if any) that used the training set.
Details
This function is intended to be used after fitting a variety of models and the final tuning parameters (if any) have been finalized. The next step would be to fit using the entire training set and verify performance using the test data.
Examples
library(recipes)
library(rsample)
library(parsnip)
set.seed(6735)
tr_te_split <- initial_split(mtcars)
spline_rec <- recipe(mpg ~ ., data = mtcars) %>%
step_ns(disp)
lin_mod <- linear_reg() %>%
set_engine("lm")
spline_res <- last_fit(lin_mod, spline_rec, split = tr_te_split)
spline_res
#> # Resampling results
#> # Manual resampling
#> # A tibble: 1 × 6
#> splits id .metrics .notes .predictions .workflow
#> <list> <chr> <list> <list> <list> <list>
#> 1 <split [24/8]> train/test spl… <tibble> <tibble> <tibble> <workflow>
# test set results
spline_res$.metrics[[1]]
#> # A tibble: 2 × 4
#> .metric .estimator .estimate .config
#> <chr> <chr> <dbl> <chr>
#> 1 rmse standard 3.80 Preprocessor1_Model1
#> 2 rsq standard 0.729 Preprocessor1_Model1
# or use a workflow
library(workflows)
spline_wfl <-
workflow() %>%
add_recipe(spline_rec) %>%
add_model(lin_mod)
last_fit(spline_wfl, split = tr_te_split)
#> # Resampling results
#> # Manual resampling
#> # A tibble: 1 × 6
#> splits id .metrics .notes .predictions .workflow
#> <list> <chr> <list> <list> <list> <list>
#> 1 <split [24/8]> train/test spl… <tibble> <tibble> <tibble> <workflow>