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,
scoringist 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_samplesdie Anzahl der Stichproben undn_featuresdie 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:
groupskann nur übergeben werden, wenn Metadaten-Routing nicht übersklearn.set_config(enable_metadata_routing=True)aktiviert ist. Wenn Routing aktiviert ist, übergeben Siegroupszusammen mit anderen Metadaten über dasparams-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)KFoldanzugeben,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,
StratifiedKFoldverwendet. In allen anderen Fällen wirdKFoldverwendet. 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.
str: siehe Zeichenkettennamen für Bewerter für Optionen.
callable: Ein Scorer-Callable-Objekt (z. B. Funktion) mit der Signatur
scorer(estimator, X, y). Siehe Callable Scorer für Details.None: das Standard-Bewertungskriterium desestimatorwird verwendet.
- 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.
Nonebedeutet 1, es sei denn, Sie befinden sich in einemjoblib.parallel_backend-Kontext.-1bedeutet 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
shuffleTrue 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 diefit-Methode des Estimators übergeben werden.Wenn
enable_metadata_routing=True: Parameter, die sicher an diefit-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_timesTrue ist.- score_timesArray der Form (n_ticks, n_cv_folds)
Die für das Bewerten aufgewendeten Zeiten in Sekunden. Nur vorhanden, wenn
return_timesTrue ist.
Siehe auch
LearningCurveDisplay.from_estimatorZeichnet 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
Galeriebeispiele#
Lernkurven plotten und die Skalierbarkeit von Modellen prüfen