wfsets_penguins01

R
statlearning
tidymodels
num
wfsets
Published

May 17, 2023

Aufgabe

Berechnen Sie die Vorhersagegüte (RMSE) für folgende Lernalgorithmen:

  • lineares Modell
  • knn (neighbors: tune)

Modellgleichung: body_mass_g ~ bill_length_mm, data = d_train.

Nutzen Sie minimale Vorverarbeitung.











Lösung

Setup

library(tidymodels)
data(penguins, package = "palmerpenguins")

Daten

d <-
  penguins %>% 
  drop_na()
d_split <- initial_split(d)
d_train <- training(d_split)
d_test <- testing(d_split)

Modelle

Lineares Modell:

mod_lin <- linear_reg()

mod_knn <- nearest_neighbor(mode = "regression",
                                  neighbors = tune())

Rezepte

rec_basic <- recipe(body_mass_g ~ bill_length_mm, data = d_train) %>% 
         step_normalize(all_predictors())

Resampling

rsmpls <- vfold_cv(d_train)

Workflow Set

wf_set <-
  workflow_set(
    preproc = list(rec_simple = rec_basic),
    models = list(mod_lm = mod_lin,
                  mod_nn = mod_knn)
  )

Fitten

wf_fit <-
  wf_set %>% 
  workflow_map(resamples = rsmpls)

Check:

wf_fit %>% pluck("result")

Bester Kandidat

autoplot(wf_fit)

autoplot(wf_fit, select_best = TRUE)

rank_results(wf_fit, rank_metric = "rmse") %>% 
  filter(.metric == "rmse")

Am besten war das lineare Modell, aber schauen wir uns auch mal das knn-Modell an, v.a. um zu wissen, wie man den besten Tuningparameter-Wert sieht:

extract_workflow_set_result(wf_fit, "rec_simple_mod_nn") %>% 
  select_best()

Last Fit

best_wf <-
  wf_fit %>% 
  extract_workflow("rec_simple_mod_lm")

Finalisieren müssen wir diesen Workflow nicht, da er keine Tuningparameter hatte.

fit_final <-
  best_wf %>% 
  last_fit(d_split)

Modellgüte im Test-Set

collect_metrics(fit_final)

Categories:

  • R
  • statlearning
  • tidymodels
  • num