library(tidymodels)
library(tictoc) # Rechenzeit messen, optional
# data(penguins, package = "palmerpenguins")
d_path <- "https://vincentarelbundock.github.io/Rdatasets/csv/modeldata/penguins.csv"
d <- read.csv(d_path)tidymodels-penguins01
ds1
tidymodels
prediction
yacsda
statlearning
num
Aufgabe
Berechnen Sie ein lineares Modell mit tidymodels und zwar anhand des penguins Datensatzes.
Modellgleichung: body_mass_g ~ bill_length_mm, data = d_train.
Gesucht ist R-Quadrat als Maß für die Modellgüte im TEST-Sample.
Hinweise:
- Fixieren Sie die Zufallszahlen auf den Startwert 42.
- Nutzen Sie eine v=5,r=1 CV.
- Entfernen Sie fehlende Werte in den Variablen.
- Verzichten Sie auf weitere Schritte der Vorverarbeitung.
Lösung
Setup:
Datensatz aufteilen:
set.seed(42)
d_split <- initial_split(penguins)
d_train <- training(d_split)
d_test <- testing(d_split)Workflow:
rec1 <-
recipe(body_mass_g ~ bill_length_mm, data = d_train) %>%
step_naomit(all_numeric())
lm_mod <-
linear_reg()
wflow <-
workflow() %>%
add_recipe(rec1) %>%
add_model(lm_mod)
wflowBacken:
d_baked <- prep(rec1) %>% bake(new_data = NULL)
d_baked %>% head()Auf NA prüfen:
sum(is.na(d_baked))CV:
set.seed(42)
folds <- vfold_cv(d_train, v = 5)
foldsResampling:
penguins_resamples <-
fit_resamples(
wflow,
resamples = folds
)
penguins_resamplesLast Fit:
penguins_last <- last_fit(wflow, d_split)Modellgüte im Test-Sample:
penguins_last %>% collect_metrics()R-Quadrat:
sol <- collect_metrics(penguins_last)[[".estimate"]][2]
solCategories:
- ds1
- tidymodels
- prediction
- yacsda
- statlearning
- num