library(tidymodels)
data(penguins, package = "palmerpenguins")
wfsets_penguins01
R
statlearning
tidymodels
num
wfsets
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
Daten
<-
d %>%
penguins drop_na()
<- initial_split(d)
d_split <- training(d_split)
d_train <- testing(d_split) d_test
Modelle
Lineares Modell:
<- linear_reg()
mod_lin
<- nearest_neighbor(mode = "regression",
mod_knn neighbors = tune())
Rezepte
<- recipe(body_mass_g ~ bill_length_mm, data = d_train) %>%
rec_basic step_normalize(all_predictors())
Resampling
<- vfold_cv(d_train) rsmpls
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:
%>% pluck("result") wf_fit
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