cross_validate#

sklearn.model_selection.cross_validate(estimator, X, y=None, *, groups=None, scoring=None, cv=None, n_jobs=None, verbose=0, params=None, pre_dispatch='2*n_jobs', return_train_score=False, return_estimator=False, return_indices=False, error_score=nan)[Quelle]#

Bewertet Metrik(en) durch Kreuzvalidierung und erfasst auch Fit-/Score-Zeiten.

Lesen Sie mehr im Benutzerhandbuch.

Parameter:
estimatorEstimator-Objekt, das ‘fit’ implementiert

Das zu verwendende Objekt zur Anpassung der Daten.

X{array-like, sparse matrix} der Form (n_samples, n_features)

Die zu fittenden Daten. Kann zum Beispiel eine Liste oder ein Array sein.

yarray-like der Form (n_samples,) oder (n_samples, n_outputs), Standardwert=None

Die Zielvariable, die im Falle von überwachtem Lernen vorhergesagt werden soll.

groupsarray-like of shape (n_samples,), default=None

Gruppenbezeichnungen für die Stichproben, die bei der Aufteilung des Datensatzes in Trainings-/Testdatensätze verwendet werden. Nur in Verbindung mit einer `Group`-Instanz von cv (z. B. GroupKFold) verwendet.

Geändert in Version 1.4: groups kann nur übergeben werden, wenn das Metadaten-Routing nicht über sklearn.set_config(enable_metadata_routing=True) aktiviert ist. Wenn das Routing aktiviert ist, übergeben Sie groups zusammen mit anderen Metadaten über das params-Argument. Z.B.: cross_validate(..., params={'groups': groups}).

scoringstr, callable, list, tuple, or dict, default=None

Strategie zur Bewertung der Leistung des estimator über Kreuzvalidierungs-Splits.

Wenn scoring einen einzelnen Score darstellt, kann man verwenden:

Wenn scoring mehrere Scores darstellt, kann man

  • eine Liste oder ein Tupel eindeutiger Strings;

  • ein callable, der ein Dictionary zurückgibt, wobei die Schlüssel die Namen der Metriken und die Werte die Score-Werte der Metriken sind;

  • ein Wörterbuch mit Metriknamen als Schlüssel und aufrufbaren Objekten als Werte.

Siehe Spezifizierung mehrerer Metriken zur Auswertung für ein Beispiel.

cvint, Kreuzvalidierungsgenerator oder iterierbar, Standardwert=None

Bestimmt die Strategie der Kreuzvalidierungsaufteilung. Mögliche Eingaben für cv sind

  • None, um die Standard-5-fache Kreuzvalidierung zu verwenden,

  • int, um die Anzahl der Folds in einem (Stratified)KFold anzugeben,

  • CV-Splitter,

  • Eine iterierbare Liste, die (Trainings-, Test-) Splits als Indizes-Arrays liefert.

Für ganzzahlige/None-Eingaben wird, wenn der Schätzer ein Klassifikator ist und `y` entweder binär oder mehrklassig ist, StratifiedKFold verwendet. In allen anderen Fällen wird KFold verwendet. Diese Splitter werden mit `shuffle=False` instanziiert, sodass die Splits über Aufrufe hinweg gleich sind.

Siehe Benutzerhandbuch für die verschiedenen Kreuzvalidierungsstrategien, die hier verwendet werden können.

Geändert in Version 0.22: Der Standardwert von cv, wenn None, hat sich von 3-Fold auf 5-Fold geändert.

n_jobsint, default=None

Anzahl der parallel auszuführenden Jobs. Das Trainieren des Schätzers und die Berechnung des Scores werden über die Kreuzvalidierungs-Splits parallelisiert. None bedeutet 1, es sei denn, Sie befinden sich in einem joblib.parallel_backend-Kontext. -1 bedeutet die Verwendung aller Prozessoren. Siehe Glossar für weitere Details.

verboseint, default=0

Die Ausführlichkeitsstufe.

paramsdict, Standardwert=None

Parameter, die an die zugrundeliegenden fit-Methode des Schätzers, den Scorer und den CV-Splitter übergeben werden.

Hinzugefügt in Version 1.4.

pre_dispatchint oder str, Standardwert=’2*n_jobs’

Steuert die Anzahl der Jobs, die während der parallelen Ausführung übermittelt werden. Die Verringerung dieser Zahl kann nützlich sein, um eine Explosion des Speicherverbrauchs zu vermeiden, wenn mehr Jobs übermittelt werden, als CPUs verarbeiten können. Dieser Parameter kann sein

  • Eine Ganzzahl, die die genaue Anzahl der gestarteten Gesamtjobs angibt

  • Ein String, der einen Ausdruck als Funktion von n_jobs angibt, wie z. B. „2*n_jobs“

return_train_scorebool, default=False

Ob Trainings-Scores einbezogen werden sollen. Die Berechnung von Trainings-Scores dient dazu, Einblicke zu gewinnen, wie sich verschiedene Parametereinstellungen auf den Überanpassungs-/Unteranpassungs-Kompromiss auswirken. Die Berechnung der Scores auf dem Trainingsdatensatz kann jedoch rechenintensiv sein und ist nicht unbedingt erforderlich, um die Parameter auszuwählen, die die beste Generalisierungsleistung erzielen.

Hinzugefügt in Version 0.19.

Geändert in Version 0.21: Der Standardwert wurde von True auf False geändert

return_estimatorbool, default=False

Ob die auf jedem Split gefitteten Schätzer zurückgegeben werden sollen.

Hinzugefügt in Version 0.20.

return_indicesbool, default=False

Ob die für jeden Split ausgewählten Trainings-/Test-Indizes zurückgegeben werden sollen.

Hinzugefügt in Version 1.3.

error_score‘raise’ oder numerisch, Standard=np.nan

Wert, der der Punktzahl zugewiesen wird, wenn beim Anpassen des Schätzers ein Fehler auftritt. Wenn auf 'raise' gesetzt, wird der Fehler ausgelöst. Wenn ein numerischer Wert angegeben wird, wird FitFailedWarning ausgelöst.

Hinzugefügt in Version 0.20.

Gibt zurück:
scoresdict von float-Arrays der Form (n_splits,)

Array von Scores des Schätzers für jeden Durchlauf der Kreuzvalidierung.

Es wird ein Dict von Arrays zurückgegeben, das die Score-/Zeit-Arrays für jeden Scorer enthält. Die möglichen Schlüssel für dieses dict sind

test_score

Das Score-Array für Test-Scores auf jedem CV-Split. Das Suffix _score in test_score ändert sich zu einer spezifischen Metrik wie test_r2 oder test_auc, wenn es mehrere Scoring-Metriken im Scoring-Parameter gibt.

train_score

Das Score-Array für Trainings-Scores auf jedem CV-Split. Das Suffix _score in train_score ändert sich zu einer spezifischen Metrik wie train_r2 oder train_auc, wenn es mehrere Scoring-Metriken im Scoring-Parameter gibt. Dies ist nur verfügbar, wenn der Parameter return_train_score auf True gesetzt ist.

fit_time

Die Zeit für das Fitten des Schätzers auf dem Trainingsdatensatz für jeden CV-Split.

score_time

Die Zeit für das Bewerten des Schätzers auf dem Testdatensatz für jeden CV-Split. (Hinweis: Die Zeit für die Bewertung auf dem Trainingsdatensatz ist nicht enthalten, auch wenn return_train_score auf True gesetzt ist).

estimator

Die Schätzerobjekte für jeden CV-Split. Dies ist nur verfügbar, wenn der Parameter return_estimator auf True gesetzt ist.

indices

Die Positions-Indizes für Training/Test für jeden CV-Split. Es wird ein Wörterbuch zurückgegeben, dessen Schlüssel entweder "train" oder "test" sind und die zugehörigen Werte eine Liste von NumPy-Arrays mit Integer-Datentyp und den Indizes sind. Verfügbar nur, wenn return_indices=True.

Siehe auch

cross_val_score

Führt die Kreuzvalidierung für die Auswertung einer einzelnen Metrik durch.

cross_val_predict

Ermittelt Vorhersagen aus jedem Split der Kreuzvalidierung zu Diagnosezwecken.

sklearn.metrics.make_scorer

Erstellt einen Scorer aus einer Leistungsmetrik oder Verlustfunktion.

Beispiele

>>> from sklearn import datasets, linear_model
>>> from sklearn.model_selection import cross_validate
>>> diabetes = datasets.load_diabetes()
>>> X = diabetes.data[:150]
>>> y = diabetes.target[:150]
>>> lasso = linear_model.Lasso()

Auswertung einer einzelnen Metrik mit cross_validate

>>> cv_results = cross_validate(lasso, X, y, cv=3)
>>> sorted(cv_results.keys())
['fit_time', 'score_time', 'test_score']
>>> cv_results['test_score']
array([0.3315057 , 0.08022103, 0.03531816])

Auswertung mehrerer Metriken mit cross_validate (siehe Dokumentation des scoring-Parameters für weitere Informationen)

>>> scores = cross_validate(lasso, X, y, cv=3,
...                         scoring=('r2', 'neg_mean_squared_error'),
...                         return_train_score=True)
>>> print(scores['test_neg_mean_squared_error'])
[-3635.5 -3573.3 -6114.7]
>>> print(scores['train_r2'])
[0.28009951 0.3908844  0.22784907]