learning_curve#

sklearn.model_selection.learning_curve(estimator, X, y, *, groups=None, train_sizes=array([0.1, 0.33, 0.55, 0.78, 1.]), cv=None, scoring=None, exploit_incremental_learning=False, n_jobs=None, pre_dispatch='all', verbose=0, shuffle=False, random_state=None, error_score=nan, return_times=False, params=None)[Quelle]#

Lernkurve.

Bestimmt Kreuzvalidierte Trainings- und Testergebnisse für verschiedene Größen von Trainingsdatensätzen.

Ein Kreuzvalidierungsgenerator teilt den gesamten Datensatz k Mal in Trainings- und Testdaten auf. Teilmengen des Trainingsdatensatzes unterschiedlicher Größe werden verwendet, um den Estimator zu trainieren, und für jede Trainings-Teilmengengröße und das Testset wird eine Bewertung berechnet. Anschließend werden die Bewertungen über alle k Läufe für jede Trainings-Teilmengengröße gemittelt.

Lesen Sie mehr im Benutzerhandbuch.

Parameter:
estimatorObjekttyp, der die „fit“-Methode implementiert

Ein Objekt dieses Typs, das für jede Validierung geklont wird. Es muss auch „predict“ implementieren, es sei denn, scoring ist eine aufrufbare Funktion, die nicht auf „predict“ angewiesen ist, um eine Bewertung zu berechnen.

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

Trainingsvektor, wobei n_samples die Anzahl der Stichproben und n_features die Anzahl der Merkmale ist.

yarray-ähnlich der Form (n_samples,) oder (n_samples, n_outputs) oder None

Ziel relativ zu X für Klassifikation oder Regression; None für unüberwachtes Lernen.

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.6: groups kann nur übergeben werden, wenn Metadaten-Routing nicht über sklearn.set_config(enable_metadata_routing=True) aktiviert ist. Wenn Routing aktiviert ist, übergeben Sie groups zusammen mit anderen Metadaten über das params-Argument statt. Z.B.: learning_curve(..., params={'groups': groups}).

train_sizesarray-ähnlich von Form (n_ticks,), Standardwert=np.linspace(0.1, 1.0, 5)

Relative oder absolute Anzahl von Trainingsbeispielen, die zur Erstellung der Lernkurve verwendet werden. Wenn der dtype float ist, wird er als Bruchteil der maximalen Größe des Trainingsdatensatzes betrachtet (die durch die ausgewählte Validierungsmethode bestimmt wird), d.h. er muss im Bereich (0, 1] liegen. Andernfalls wird er als absolute Größe der Trainingsdatensätze interpretiert. Beachten Sie, dass für die Klassifizierung die Anzahl der Stichproben normalerweise ausreichend groß sein muss, um mindestens eine Stichprobe aus jeder Klasse zu enthalten.

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.

scoringstr oder callable, Standardwert=None

Bewertungsmethode, die zum Auswerten der Trainings- und Testdatensätze verwendet wird.

exploit_incremental_learningbool, Standardwert=False

Wenn der Estimator inkrementelles Lernen unterstützt, wird dies verwendet, um das Anpassen für verschiedene Trainingsdatensatzgrößen zu beschleunigen.

n_jobsint, default=None

Anzahl der parallel auszuführenden Jobs. Das Anpassen des Schätzers und die Berechnung der Bewertung werden für die verschiedenen Trainings- und Testdatensätze 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.

pre_dispatchint oder str, Standard=’all’

Anzahl der vorab verteilten Jobs für die parallele Ausführung (Standard ist 'all'). Die Option kann den zugeordneten Speicher reduzieren. Die Zeichenkette kann ein Ausdruck wie '2*n_jobs' sein.

verboseint, default=0

Steuert die Ausführlichkeit: je höher, desto mehr Meldungen.

shufflebool, default=False

Ob die Trainingsdaten vor der Erstellung von Präfixen basierend auf ``train_sizes`` gemischt werden sollen.

random_stateint, RandomState-Instanz oder None, default=None

Verwendet, wenn shuffle True ist. Übergeben Sie eine Ganzzahl für reproduzierbare Ausgaben über mehrere Funktionsaufrufe hinweg. Siehe Glossar.

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.

return_timesbool, Standardwert=False

Gibt zurück, ob die Fit- und Bewertungszeiten zurückgegeben werden sollen.

paramsdict, Standardwert=None

Parameter, die an die fit-Methode des Estimators und an den Scorer übergeben werden.

  • Wenn enable_metadata_routing=False (Standard): Parameter, die direkt an die fit-Methode des Estimators übergeben werden.

  • Wenn enable_metadata_routing=True: Parameter, die sicher an die fit-Methode des Estimators weitergeleitet werden. Weitere Details finden Sie im Benutzerhandbuch für Metadaten-Routing.

Hinzugefügt in Version 1.6.

Gibt zurück:
train_sizes_absArray der Form (n_unique_ticks,)

Anzahl der Trainingsbeispiele, die zur Erstellung der Lernkurve verwendet wurden. Beachten Sie, dass die Anzahl der Ticks geringer sein kann als n_ticks, da doppelte Einträge entfernt werden.

train_scoresArray der Form (n_ticks, n_cv_folds)

Ergebnisse auf Trainingsdatensätzen.

test_scoresArray der Form (n_ticks, n_cv_folds)

Ergebnisse auf Testdatensätzen.

fit_timesArray der Form (n_ticks, n_cv_folds)

Die für das Anpassen aufgewendeten Zeiten in Sekunden. Nur vorhanden, wenn return_times True ist.

score_timesArray der Form (n_ticks, n_cv_folds)

Die für das Bewerten aufgewendeten Zeiten in Sekunden. Nur vorhanden, wenn return_times True ist.

Siehe auch

LearningCurveDisplay.from_estimator

Zeichnet eine Lernkurve mit einem Estimator und Daten.

Beispiele

>>> from sklearn.datasets import make_classification
>>> from sklearn.tree import DecisionTreeClassifier
>>> from sklearn.model_selection import learning_curve
>>> X, y = make_classification(n_samples=100, n_features=10, random_state=42)
>>> tree = DecisionTreeClassifier(max_depth=4, random_state=42)
>>> train_size_abs, train_scores, test_scores = learning_curve(
...     tree, X, y, train_sizes=[0.3, 0.6, 0.9]
... )
>>> for train_size, cv_train_scores, cv_test_scores in zip(
...     train_size_abs, train_scores, test_scores
... ):
...     print(f"{train_size} samples were used to train the model")
...     print(f"The average train accuracy is {cv_train_scores.mean():.2f}")
...     print(f"The average test accuracy is {cv_test_scores.mean():.2f}")
24 samples were used to train the model
The average train accuracy is 1.00
The average test accuracy is 0.85
48 samples were used to train the model
The average train accuracy is 1.00
The average test accuracy is 0.90
72 samples were used to train the model
The average train accuracy is 1.00
The average test accuracy is 0.93