0Pricing
Learn AI with Python · Lektion

Strategien für Cross-Validation

k-fold, stratifiziertes k-fold, Leave-One-Out und Time-Series-Split – wann Sie welche Methode verwenden.

Strategien für Cross-Validation ist eine kostenlose Learn AI with Python-Lektion auf CoddyKit. Dies ist Lektion 1 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 Learn AI with Python-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Learn AI with Python-Kurs umfasst insgesamt 4 Lektionen.

Warum Kreuzvalidierung

Ein einzelner Train-/Test-Split kann zufällig besonders günstig oder ungünstig ausfallen. Kreuzvalidierung wiederholt die Auswertung mit verschiedenen Aufteilungen und mittelt die Ergebnisse. Dadurch erhalten Sie eine zuverlässigere Leistungsschätzung.

K-Fold-Kreuzvalidierung

KFold teilt die Daten in K gleich große Teile auf. Jeder Fold wird einmal als Testset verwendet, während das Modell mit den übrigen Teilen trainiert wird. So erhalten Sie K Werte, die Sie mitteln können.

from sklearn.model_selection import KFold

kf = KFold(n_splits=5, shuffle=True, random_state=0)
for train_idx, test_idx in kf.split(X):
    Xtr, Xte = X[train_idx], X[test_idx]
    ytr, yte = y[train_idx], y[test_idx]
    # train and evaluate here

Stratifiziertes K-Fold für Klassifikation

Bei der Klassifikation kann ein gewöhnliches K-Fold Folds mit unausgeglichenen Klassenverhältnissen erzeugen. StratifiedKFold bewahrt die Klassenverhältnisse in jedem Fold.

from sklearn.model_selection import StratifiedKFold

skf = StratifiedKFold(n_splits=5, shuffle=True, random_state=0)
for train_idx, test_idx in skf.split(X, y):
    # each fold keeps the same class balance as the full set
    pass

cross_val_score als Kurzform

cross_val_score führt die gesamte Schleife für Sie aus und gibt ein Array mit den Werten der einzelnen Folds zurück. Bei Klassifikatoren verwendet die Funktion automatisch StratifiedKFold.

from sklearn.model_selection import cross_val_score
from sklearn.ensemble import RandomForestClassifier

clf = RandomForestClassifier(random_state=0)
scores = cross_val_score(clf, X, y, cv=5, scoring="accuracy")
print(scores)
print("Mean:", scores.mean(), "Std:", scores.std())

Die Anzahl der Folds wählen

Mehr Folds (z. B. 10) liefern eine weniger verzerrte Schätzung, erfordern aber mehr Rechenaufwand. Eine 5-fache Kreuzvalidierung ist ein verbreiteter Kompromiss. Bei sehr kleinen Datensätzen verwendet Leave-One-Out N Folds, wobei jeder Testsatz aus genau einer Stichprobe besteht.

from sklearn.model_selection import LeaveOneOut, cross_val_score

loo = LeaveOneOut()
scores = cross_val_score(clf, X, y, cv=loo)
print("Mean:", scores.mean())

TimeSeriesSplit für Zeitreihendaten

Bei Zeitreihen dürfen Sie niemals mit der Zukunft trainieren. TimeSeriesSplit verwendet immer vergangene Daten zum Trainieren und den nächsten Block zum Testen. Über die Folds wird dabei das Trainingsfenster erweitert.

from sklearn.model_selection import TimeSeriesSplit

tscv = TimeSeriesSplit(n_splits=5)
for train_idx, test_idx in tscv.split(X):
    # train_idx always precedes test_idx in time
    print(len(train_idx), len(test_idx))

Warum die Reihenfolge bei Zeitreihen wichtig ist

Das Mischen zeitlich geordneter Daten lässt Zukunftsinformationen ins Training einfließen und führt zu überhöhten Werten. TimeSeriesSplit berücksichtigt die chronologische Reihenfolge, sodass Ihre Auswertung reale Bedingungen für Prognosen widerspiegelt.

cross_validate für mehrere Metriken

cross_validate funktioniert ähnlich wie cross_val_score, gibt aber mehrere Metriken gleichzeitig zurück und kann Trainingswerte sowie Anpassungszeiten enthalten.

from sklearn.model_selection import cross_validate

results = cross_validate(
    clf, X, y, cv=5,
    scoring=["accuracy", "f1_macro", "roc_auc_ovr"],
    return_train_score=True,
)
print(results["test_accuracy"])
print(results["test_f1_macro"])

Ausgabe von cross_validate auswerten

Das Ergebnis ist ein Dictionary mit Schlüsseln wie test_<metric>, train_<metric>, fit_time und score_time. Der Vergleich von Trainings- und Testwerten hilft dabei, Überanpassung zu erkennen.

import numpy as np

gap = results["train_accuracy"].mean() - results["test_accuracy"].mean()
print("Overfit gap:", gap)
print("Avg fit time:", np.mean(results["fit_time"]))

Kreuzvalidierung und Datenleckage

Führen Sie die Vorverarbeitung (Skalierung, Kodierung) immer innerhalb der CV-Schleife durch, nicht davor. Verwenden Sie eine Pipeline, damit jeder Fold nur mit seinen Trainingsdaten skaliert und Datenleckage verhindert wird.

from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC
from sklearn.model_selection import cross_val_score

pipe = make_pipeline(StandardScaler(), SVC())
scores = cross_val_score(pipe, X, y, cv=5)

Die passende Strategie auswählen

Verwenden Sie StratifiedKFold für Klassifikation, gewöhnliches KFold für Regression und TimeSeriesSplit für zeitbezogene Daten. Kapseln Sie die Vorverarbeitung in einer Pipeline und geben Sie den Mittelwert sowie die Standardabweichung über alle Folds an.

Kurzer Test

Testen Sie Ihr Wissen über Kreuzvalidierung.

Zusammenfassung

Zusammenfassung: Kreuzvalidierung mittelt die Leistung über mehrere Aufteilungen. Verwenden Sie KFold für Regression, StratifiedKFold für ausgewogene Klassifikation und TimeSeriesSplit für zeitbezogene Daten. cross_val_score liefert eine Metrik; cross_validate liefert mehrere Metriken sowie Zeitmessungen. Führen Sie die Vorverarbeitung immer innerhalb einer Pipeline durch, um Datenleckage zu verhindern.

Häufig gestellte Fragen

Ist die Lektion „Strategien für Cross-Validation“ kostenlos?

Ja — der vollständige Text von „Strategien für Cross-Validation“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Learn AI with Python-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Learn AI with Python-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Strategien für Cross-Validation“?

k-fold, stratifiziertes k-fold, Leave-One-Out und Time-Series-Split – wann Sie welche Methode verwenden. Du übst Learn AI with Python 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 Learn AI with Python zu starten?

Keine Vorkenntnisse erforderlich. Learn AI with Python 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 1 von 4.

Wie lange dauert die Lektion „Strategien für Cross-Validation“?

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 Learn AI with Python-Lektion Code schreiben und ausführen?

Ja. Jede Learn AI with Python-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. Strategien für Cross-Validation
  2. Klassifikationsmetriken im Detail
  3. Grid Search und Random Search
  4. Bayessche Optimierung mit Optuna
← Zurück zu Learn AI with Python