library(tidymodels)
library(tictoc) # Zeitmessung
data(penguins, package = "palmerpenguins")wfsets1
R
statlearning
tidymodels
wfsets
template
Aufgabe
Berechnen Sie die Vorhersagegüte (RMSE) für folgende Lernalgorithmen mittesl tidymodels:
- lineares Modell
Modellgleichung: body_mass_g ~ bill_length_mm, data = d_train.
Nutzen Sie minimale Vorverarbeitung im Rahmen zweier Rezepte.
Nutzen Sie ein Workflowset.
Lösung
Setup
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())rec_plain <- recipe(body_mass_g ~ bill_length_mm, data = d_train)Resampling
rsmpls <- vfold_cv(d_train, v = 5)Workflow Set
wf_set <-
workflow_set(
preproc = list(rec_simple = rec_basic,
rec_plain = rec_plain),
models = list(mod_lm = mod_lin)
)Fitten
tic()
wf_fit <-
wf_set %>%
workflow_map(resamples = rsmpls)
toc()
wf_fitCheck:
wf_fit %>% pluck("result")Bester Kandidat
autoplot(wf_fit)
autoplot(wf_fit, select_best = TRUE)
collect_metrics(wf_fit)rank_results(wf_fit, rank_metric = "rmse") %>%
filter(.metric == "rmse")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)