library(tidymodels)
library(tidyverse)
library(tictoc)
bike04
statlearning
tidymodels
num
Aufgabe
Kann man die Anzahl gerade verliehener Fahrräder eines entsprechenden Anbieters anhand der Temperatur vorhersagen?
In dieser Übung untersuchen wir diese Frage.
Sie können die Daten von der Webseite der UCI herunterladen.
Wir beziehen uns auf den Datensatz day
.
Berechnen Sie einen Entscheidungsbaum mit der Anzahl der aktuell vermieteten Räder als AV und der aktuellen Temperatur als UV!
Tunen Sie alle Paramter; lassen Sie sich 20 Tuningparameter vorschlagen.
Geben Sie den MSE an!
Lösung
<- read.csv("/Users/sebastiansaueruser/datasets/Bike-Sharing-Dataset/day.csv") d
glimpse(d)
Data split
set.seed(42)
<- initial_split(d, strata = cnt)
d_split
<- training(d_split)
d_train <- testing(d_split) d_test
Define recipe
<-
rec1 recipe(cnt ~ temp, data = d)
Define model
<-
m1 decision_tree(cost_complexity = tune(),
tree_depth = tune(),
min_n = tune(),
mode = "regression")
Tuning grid
<-
grid grid_latin_hypercube(cost_complexity(),
tree_depth(),
min_n(),
size = 20)
grid
Alternativ:
<-
grid grid_latin_hypercube(extract_parameter_set_dials(m1), size = 50)
grid
Define Resamples
<- vfold_cv(d_train) rsmpl
Workflow
<-
wf1 workflow() %>%
add_model(m1) %>%
add_recipe(rec1)
Fit
tic()
<- tune_grid(
fit1 object = wf1,
resamples = rsmpl)
toc()
fit1
Bester Kandidat
show_best(fit1)
<-
wf1_best %>%
wf1 finalize_workflow(parameters = select_best(fit1))
Last Fit
<- last_fit(wf1_best, d_split) fit_testsample
Model performance (metrics) in test set
%>% collect_metrics() fit_testsample
<- fit_testsample %>% collect_metrics() %>% pluck(3, 1)
MSE MSE
Solution:
Categories:
- statlearning
- tidymodels
- num