R Academy · Lektion

Workflows: Rezepte und Modelle kombinieren

Bündeln Sie Vorverarbeitung und Modell in einem einzigen Workflow-Objekt

Lektion 3 von 413 Schritte

Workflows: Rezepte und Modelle kombinieren ist eine kostenlose R Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des R Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der R Academy-Kurs umfasst insgesamt 4 Lektionen.

Was ist ein Workflow?

Ein Workflow bündelt ein Rezept und eine Modellspezifikation in einem einzigen Objekt. Damit wird ein zentrales Problem gelöst: Vorverarbeitungs- und Modellierungsschritte müssen bei der Kreuzvalidierung und beim abschließenden Training als Einheit behandelt werden. Andernfalls könnten Parameter wie Mittelwerte zur Normalisierung aus Test-Folds in das Modell gelangen.

library(workflows)

# Start an empty workflow
wf <- workflow()
print(wf)

# Workflows have two slots: preprocessor and model
# Both must be filled before fitting

add_recipe() und add_model()

Verwenden Sie add_recipe(rec), um einen Rezept-Präprozessor anzuhängen, und add_model(spec), um eine parsnip-Modellspezifikation anzuhängen. Der Pipe-Operator macht dies besonders übersichtlich.

library(recipes)
library(parsnip)
library(workflows)

rec <- recipe(price ~ ., data = train) |>
  step_impute_median(all_numeric_predictors()) |>
  step_dummy(all_nominal_predictors()) |>
  step_normalize(all_numeric_predictors())

spec <- linear_reg() |> set_engine('lm')

wf <- workflow() |>
  add_recipe(rec) |>
  add_model(spec)

print(wf)

fit() für einen Workflow

Wenn Sie für einen Workflow fit(wf, data = train) aufrufen, wird automatisch prep() für das Rezept mit den Trainingsdaten ausgeführt. Anschließend wird das Modell mit den vorverarbeiteten Merkmalen trainiert. Sie müssen prep() oder bake() nie manuell aufrufen.

fitted_wf <- fit(wf, data = housing_train)

# The fitted workflow stores both the prepped recipe
# and the trained model
print(fitted_wf)

predict() für einen angepassten Workflow

Wenn Sie predict(fitted_wf, new_data = test) aufrufen, wendet der Workflow automatisch bake() auf die neuen Daten an. Dabei wird das trainierte Rezept verwendet, bevor die Vorhersagen erzeugt werden. Dadurch entfällt das Risiko, die Testdaten versehentlich nicht vorzuverarbeiten.

# Predictions automatically preprocess the test data
preds <- predict(fitted_wf, new_data = housing_test)
head(preds)

# For classification
preds_prob <- predict(fitted_wf, new_data = test_df, type = 'prob')
preds_class <- predict(fitted_wf, new_data = test_df, type = 'class')

last_fit() — Mit allen Trainingsdaten trainieren, mit Testdaten auswerten

last_fit(wf, split) übernimmt Ihren endgültigen Workflow und das ursprüngliche Train-/Test-Split-Objekt. Die Funktion passt den Workflow an den Trainingsanteil an und wertet ihn mit dem Testanteil aus — der übliche Schritt zur abschließenden Bewertung des Modells nach dem Abstimmen.

library(rsample)

split <- initial_split(housing_data, prop = 0.8, strata = price)

# Fit on training, evaluate on test
final_res <- last_fit(wf, split)

# View performance on the held-out test set
collect_metrics(final_res)

extract_fit_parsnip()

extract_fit_parsnip(fitted_wf) extrahiert das trainierte parsnip-Modellobjekt aus einem angepassten Workflow. Sie können es anschließend verwenden, um Koeffizienten oder die Variablenwichtigkeit zu untersuchen oder es an Werkzeuge zur Modellerklärung zu übergeben.

fitted_wf <- fit(wf, data = housing_train)

# Extract the parsnip model
parsnip_fit <- extract_fit_parsnip(fitted_wf)

# Now access the underlying model
tidy(parsnip_fit)      # coefficients for lm
vip::vip(parsnip_fit)  # variable importance plot

extract_recipe()

extract_recipe(fitted_wf) gibt das vorbereitete Rezept aus einem angepassten Workflow zurück. Das ist nützlich, um zu untersuchen, welche Transformationen angewendet wurden, oder um die trainierte Vorverarbeitung abzurufen und unabhängig auf externe Daten anzuwenden.

fitted_wf <- fit(wf, data = housing_train)

# Get the prepped recipe
prepped_rec <- extract_recipe(fitted_wf)

# Inspect normalization stats
tidy(prepped_rec, number = 3)  # step_normalize details

# Apply recipe to completely new external data
new_baked <- bake(prepped_rec, new_data = brand_new_df)

augment() für Workflows

augment(fitted_wf, new_data) gibt den Eingabedatenrahmen mit angehängten Vorhersagespalten zurück. Bei der Regression wird .pred hinzugefügt; bei der Klassifikation werden .pred_class sowie Wahrscheinlichkeitsspalten für jede Klasse ergänzt.

fitted_wf <- fit(wf, data = housing_train)

# Append predictions to the test data frame
results <- augment(fitted_wf, new_data = housing_test)

# Now compute metrics directly
library(yardstick)
results |>
  metrics(truth = price, estimate = .pred)

Einen Workflow aktualisieren

Sie können einzelne Bestandteile eines Workflows mit update_recipe() oder update_model() aktualisieren, ohne ihn von Grund auf neu zu erstellen. Das ist beim Experimentieren praktisch, wenn Sie die Modell-Engine austauschen, aber dasselbe Rezept beibehalten möchten.

# Original workflow with lm
wf_lm <- workflow() |>
  add_recipe(rec) |>
  add_model(linear_reg() |> set_engine('lm'))

# Swap model to random forest, keep same recipe
wf_rf <- update_model(
  wf_lm,
  rand_forest(trees = 300) |>
    set_engine('ranger') |>
    set_mode('regression')
)

fit_rf <- fit(wf_rf, data = housing_train)

add_formula() im Vergleich zu add_recipe()

Wenn Sie kein Rezept benötigen, können Sie add_formula(outcome ~ .) als Präprozessor verwenden. Dadurch werden nur minimale Transformationen angewendet, nämlich die Formelspezifikation. Verwenden Sie add_recipe(), wenn Sie Feature Engineering benötigen, und add_formula() für schnelle Basismodelle.

# Simple baseline — no recipe needed
baseline_wf <- workflow() |>
  add_formula(price ~ sqft + bedrooms + bathrooms) |>
  add_model(linear_reg() |> set_engine('lm'))

baseline_fit <- fit(baseline_wf, data = housing_train)
baseline_preds <- predict(baseline_fit, new_data = housing_test)

# Compare RMSE to recipe-based model
yardstick::rmse_vec(housing_test$price, baseline_preds$.pred)

Workflow-Sets zum Vergleichen

workflow_set() aus dem Paket workflowsets erstellt eine Sammlung von Workflows, die mehrere Rezepte und Modellspezifikationen kombinieren. Anschließend können Sie mit workflow_map() alle Kombinationen gleichzeitig abstimmen und auswerten.

library(workflowsets)

all_workflows <- workflow_set(
  preproc = list(basic = basic_rec, full = full_rec),
  models  = list(
    lm  = linear_reg() |> set_engine('lm'),
    rf  = rand_forest(trees = 200) |> set_engine('ranger') |> set_mode('regression')
  )
)

# Fit all 4 combinations on resamples
results <- workflow_map(all_workflows, 'fit_resamples', resamples = cv_folds)
autoplot(results)

Kurze Überprüfung

Was ist der wesentliche Vorteil von last_fit(workflow, split) gegenüber dem manuellen Anpassen und Vorhersagen?

Zusammenfassung zu Workflows

Die wichtigsten Erkenntnisse aus „Workflows: Rezepte und Modelle kombinieren“:

  • workflow() |> add_recipe(rec) |> add_model(spec) bündelt Vorverarbeitung und Modellierung.
  • fit(wf, data = train) bereitet das Rezept vor und trainiert das Modell mit einem einzigen Aufruf.
  • predict(fitted_wf, new_data) wendet vor der Vorhersage automatisch bake() auf neue Daten an.
  • last_fit(wf, split) trainiert mit den Trainingsdaten und wertet mit den Testdaten aus — verwenden Sie dies zur abschließenden Modellbewertung.
  • extract_fit_parsnip() und extract_recipe() rufen Bestandteile zur Untersuchung ab.
  • augment() hängt Vorhersagen an den Datenrahmen an und erleichtert dadurch die Metrikberechnung.
  • workflow_set() vergleicht mehrere Kombinationen aus Rezepten und Modellen gleichzeitig.
# Canonical tidymodels workflow pattern
split    <- initial_split(data, prop = 0.8)
train    <- training(split)
test     <- testing(split)

rec  <- recipe(y ~ ., data = train) |> step_normalize(all_numeric_predictors())
spec <- rand_forest(trees = 300) |> set_engine('ranger') |> set_mode('regression')

wf   <- workflow() |> add_recipe(rec) |> add_model(spec)

final_res <- last_fit(wf, split)
collect_metrics(final_res)
Kostenlos starten

Lerne R mit einem KI-Tutor — kostenlos

Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.

Kurse
43
Lektionen
159

Häufig gestellte Fragen

Ist die Lektion „Workflows: Rezepte und Modelle kombinieren“ kostenlos?

Ja — der vollständige Text von „Workflows: Rezepte und Modelle kombinieren“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des R Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der R Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Workflows: Rezepte und Modelle kombinieren“?

Bündeln Sie Vorverarbeitung und Modell in einem einzigen Workflow-Objekt Du übst R Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um R Academy zu starten?

Keine Vorkenntnisse erforderlich. R Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.

Wie lange dauert die Lektion „Workflows: Rezepte und Modelle kombinieren“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser R Academy-Lektion Code schreiben und ausführen?

Ja. Jede R Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Feature Engineering mit recipes
  2. Modellspezifikationen mit parsnip
  3. Workflows: Rezepte und Modelle kombinieren
  4. Resampling und Cross-Validation mit rsample
← Zurück zu R Academy