This function computes metrics from tuning results. The arguments and
output formats are closely related to those from collect_metrics(), but
this function additionally takes a metrics argument with a
metric set for new metrics to compute. This
allows for computing new performance metrics without requiring users to
re-evaluate models against resamples.
Note that the control option save_pred = TRUE must
have been supplied when generating x.
Usage
compute_metrics(x, metrics, summarize, event_level, ...)
# Default S3 method
compute_metrics(x, metrics, summarize = TRUE, event_level = "first", ...)
# S3 method for class 'tune_results'
compute_metrics(x, metrics, ..., summarize = TRUE, event_level = "first")Arguments
- x
The results of a tuning function like
tune_grid()orfit_resamples(), generated with the control optionsave_pred = TRUE.- metrics
A metric set of new metrics to compute. See the "Details" section below for more information.
- summarize
A single logical value indicating whether metrics should be summarized over resamples (
TRUE) or return the values for each individual resample. Seecollect_metrics()for more details on how metrics are summarized.- event_level
A single string containing either
"first"or"second". This argument is passed on to yardstick metric functions when any type of class prediction is made, and specifies which level of the outcome is considered the "event".- ...
Not currently used.
Value
A tibble. See collect_metrics() for more details on the return value.
Details
Each metric in the set supplied to the metrics argument must have a metric
type (usually "numeric", "class", or "prob") that matches some metric
evaluated when generating x. e.g. For example, if x was generated with
only hard "class" metrics, this function can't compute metrics that take in
class probabilities ("prob".) By default, the tuning functions used to
generate x compute metrics of all needed types.
Examples
# load needed packages:
library(parsnip)
library(rsample)
library(yardstick)
# evaluate a linear regression against resamples.
# note that we pass `save_pred = TRUE`:
res <-
fit_resamples(
linear_reg(),
mpg ~ cyl + hp,
bootstraps(mtcars, 5),
control = control_grid(save_pred = TRUE)
)
# to return the metrics supplied to `fit_resamples()`:
collect_metrics(res)
#> # A tibble: 2 × 6
#> .metric .estimator mean n std_err .config
#> <chr> <chr> <dbl> <int> <dbl> <chr>
#> 1 rmse standard 3.37 5 0.206 pre0_mod0_post0
#> 2 rsq standard 0.731 5 0.0199 pre0_mod0_post0
# to compute new metrics:
compute_metrics(res, metric_set(mae))
#> # A tibble: 1 × 6
#> .metric .estimator mean n std_err .config
#> <chr> <chr> <dbl> <int> <dbl> <chr>
#> 1 mae standard 2.72 5 0.251 pre0_mod0_post0
# if `metrics` is the same as that passed to `fit_resamples()`,
# then `collect_metrics()` and `compute_metrics()` give the same
# output, though `compute_metrics()` is quite a bit slower:
all.equal(
collect_metrics(res),
compute_metrics(res, metric_set(rmse, rsq))
)
#> [1] TRUE
