GridSearchCV#
- class sklearn.model_selection.GridSearchCV(estimator, param_grid, *, scoring=None, n_jobs=None, refit=True, cv=None, verbose=0, pre_dispatch='2*n_jobs', error_score=nan, return_train_score=False)[Quelle]#
Exhaustive Suche nach angegebenen Parameterwerten für einen Schätzer.
Wichtige Mitglieder sind fit, predict.
GridSearchCV implementiert eine „fit“- und eine „score“-Methode. Es implementiert auch „score_samples“, „predict“, „predict_proba“, „decision_function“, „transform“ und „inverse_transform“, falls diese im verwendeten Estimator implementiert sind.
Die Parameter des Estimators, die zur Anwendung dieser Methoden verwendet werden, werden durch kreuzvalidierte Grid-Suche über ein Parameter-Grid optimiert.
Lesen Sie mehr im Benutzerhandbuch.
- Parameter:
- estimatorEstimator-Objekt
Es wird angenommen, dass dies die scikit-learn-Estimator-Schnittstelle implementiert. Entweder muss der Estimator eine
scoreFunktion bereitstellen, oderscoringmuss übergeben werden.- param_griddict oder Liste von Dictionaries
Dictionary mit Parameternamen (
str) als Schlüssel und Listen von Parameter-Einstellungen zum Ausprobieren als Werte, oder eine Liste solcher Dictionaries, in welchem Fall die durch jedes Dictionary in der Liste aufgespannten Grids durchsucht werden. Dies ermöglicht die Suche über beliebige Sequenzen von Parameter-Einstellungen.- scoringstr, callable, list, tuple oder dict, default=None
Strategie zur Bewertung der Leistung des kreuzvalidierten Modells auf dem Testdatensatz.
Wenn
scoringeinen einzelnen Score darstellt, kann man verwenden:einen einzelnen String verwenden (siehe String-Namen für Scorer);
eine aufrufbare Funktion (siehe Aufrufbare Scorer), die einen einzelnen Wert zurückgibt;
None, das standardmäßige Bewertungskriterium desestimatorwird verwendet.
Wenn
scoringmehrere Scores darstellt, kann maneine 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 Dictionary mit Metrik-Namen als Schlüssel und callables als Werte.
Siehe Spezifizierung mehrerer Metriken zur Auswertung für ein Beispiel.
- n_jobsint, default=None
Anzahl der parallel auszuführenden Jobs.
Nonebedeutet 1, es sei denn, es befindet sich in einemjoblib.parallel_backendKontext.-1bedeutet die Verwendung aller Prozessoren. Siehe Glossar für weitere Details.Geändert in Version v0.20: Standardwert von
n_jobsvon 1 auf None geändert- refitbool, str, oder callable, default=True
Refitt einen Estimator mit den besten gefundenen Parametern auf dem gesamten Datensatz.
Bei mehrfacher Metrikauswertung muss dies ein
strsein, der den zur Auswahl der besten Parameter für die abschließende Refittung des Estimators verwendeten Scorer bezeichnet.Wenn bei der Auswahl eines besten Estimators andere Überlegungen als die maximale Punktzahl eine Rolle spielen, kann
refitauf eine Funktion gesetzt werden, die den ausgewähltenbest_index_basierend aufcv_results_zurückgibt. In diesem Fall werdenbest_estimator_undbest_params_entsprechend dem zurückgegebenenbest_index_gesetzt, während das Attributbest_score_nicht verfügbar ist.Der refittete Estimator ist unter dem Attribut
best_estimator_verfügbar und ermöglicht die direkte Verwendung vonpredictauf dieserGridSearchCV-Instanz.Ebenfalls bei mehrfacher Metrikauswertung sind die Attribute
best_index_,best_score_undbest_params_nur verfügbar, wennrefitgesetzt ist und alle bezüglich dieses spezifischen Scorers ermittelt werden.Siehe den Parameter
scoring, um mehr über die mehrfache Metrikauswertung zu erfahren.Siehe Benutzerdefinierte Refitt-Strategie einer Grid-Suche mit Kreuzvalidierung, um zu sehen, wie eine benutzerdefinierte Auswahlstrategie mit einem callable über
refitentworfen wird.Siehe dieses Beispiel für ein Beispiel, wie
refit=callableverwendet wird, um Modellkomplexität und kreuzvalidierte Scores auszubalancieren.Geändert in Version 0.20: Unterstützung für callable hinzugefügt.
- 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,
Ganzzahl, um die Anzahl der Folds in einem
(Stratified)KFoldanzugeben,Eine iterierbare Liste, die (Trainings-, Test-) Splits als Indizes-Arrays liefert.
Für Ganzzahl-/None-Eingaben, wenn der Schätzer ein Klassifikator ist und
yentweder binär oder multiklassig ist, wirdStratifiedKFoldverwendet. In allen anderen Fällen wirdKFoldverwendet. Diese Splitter werden mitshuffle=Falseinstanziiert, sodass die Splits bei jedem Aufruf 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.- verboseint
Steuert die Ausführlichkeit: je höher, desto mehr Meldungen.
>1 : die Berechnungszeit für jede Faltung und jeden Parameterkandidaten wird angezeigt;
>2 : der Score wird ebenfalls angezeigt;
>3 : die Indizes der Faltung und der Kandidatenparameter werden ebenfalls zusammen mit der Startzeit der Berechnung angezeigt.
- pre_dispatchint oder str, default=’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
None, in welchem Fall alle Jobs sofort erstellt und gestartet werden. Verwenden Sie dies für leichtgewichtige und schnell laufende Jobs, um Verzögerungen durch bedarfsweises Starten der Jobs zu vermeiden.
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“
- error_score‘raise’ oder numerisch, Standard=np.nan
Wert, der dem Score zugewiesen wird, wenn ein Fehler bei der Estimator-Anpassung auftritt. Wenn auf 'raise' gesetzt, wird der Fehler ausgelöst. Wenn ein numerischer Wert angegeben wird, wird FitFailedWarning ausgelöst. Dieser Parameter beeinflusst den Refitt-Schritt nicht, der immer einen Fehler auslösen wird.
- return_train_scorebool, default=False
Wenn
False, enthält das Attributcv_results_keine Trainingsscores. Die Berechnung von Trainingsscores wird verwendet, um Einblicke zu gewinnen, wie sich verschiedene Parameter-Einstellungen auf den Kompromiss zwischen Überanpassung/Unteranpassung auswirken. Die Berechnung von 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
TrueaufFalsegeändert
- Attribute:
- cv_results_dict von numpy (masked) ndarrays
Ein Dictionary mit Schlüsseln als Spaltenüberschriften und Werten als Spalten, das in einen pandas
DataFrameimportiert werden kann.Zum Beispiel die untenstehende Tabelle
param_kernel
param_gamma
param_degree
split0_test_score
…
rank_t…
‘poly’
–
2
0.80
…
2
‘poly’
–
3
0.70
…
4
‘rbf’
0.1
–
0.80
…
3
‘rbf’
0.2
–
0.93
…
1
wird durch ein
cv_results_Dictionary von{ 'param_kernel': masked_array(data = ['poly', 'poly', 'rbf', 'rbf'], mask = [False False False False]...) 'param_gamma': masked_array(data = [-- -- 0.1 0.2], mask = [ True True False False]...), 'param_degree': masked_array(data = [2.0 3.0 -- --], mask = [False False True True]...), 'split0_test_score' : [0.80, 0.70, 0.80, 0.93], 'split1_test_score' : [0.82, 0.50, 0.70, 0.78], 'mean_test_score' : [0.81, 0.60, 0.75, 0.85], 'std_test_score' : [0.01, 0.10, 0.05, 0.08], 'rank_test_score' : [2, 4, 3, 1], 'split0_train_score' : [0.80, 0.92, 0.70, 0.93], 'split1_train_score' : [0.82, 0.55, 0.70, 0.87], 'mean_train_score' : [0.81, 0.74, 0.70, 0.90], 'std_train_score' : [0.01, 0.19, 0.00, 0.03], 'mean_fit_time' : [0.73, 0.63, 0.43, 0.49], 'std_fit_time' : [0.01, 0.02, 0.01, 0.01], 'mean_score_time' : [0.01, 0.06, 0.04, 0.04], 'std_score_time' : [0.00, 0.00, 0.00, 0.01], 'params' : [{'kernel': 'poly', 'degree': 2}, ...], }
Für ein Beispiel zur Visualisierung und Interpretation von GridSearch-Ergebnissen siehe Statistischer Vergleich von Modellen mittels Grid-Suche.
HINWEIS
Der Schlüssel
'params'wird verwendet, um eine Liste von Parameter-Einstellungen-Dictionaries für alle Parameterkandidaten zu speichern.Die Werte
mean_fit_time,std_fit_time,mean_score_timeundstd_score_timesind alle in Sekunden angegeben.Bei mehrfacher Metrikauswertung sind die Scores für alle Scorer im
cv_results_Dictionary unter Schlüsseln verfügbar, die mit dem Namen des Scorers enden ('_<scorer_name>') anstelle von'_score', wie oben gezeigt. (z.B. 'split0_test_precision', 'mean_train_precision' etc.)- best_estimator_estimator
Estimator, der von der Suche ausgewählt wurde, d.h. der Estimator, der den höchsten Score (oder den kleinsten Verlust, falls angegeben) auf den zurückgelassenen Daten erzielte. Nicht verfügbar, wenn
refit=False.Siehe den Parameter
refitfür weitere Informationen zu erlaubten Werten.- best_score_float
Mittlerer kreuzvalidierter Score des best_estimator.
Bei mehrfacher Metrikauswertung ist dieser nur vorhanden, wenn
refitangegeben ist.Dieses Attribut ist nicht verfügbar, wenn
refiteine Funktion ist.- best_params_dict
Parameter-Einstellung, die die besten Ergebnisse auf den zurückgelassenen Daten lieferte.
Bei mehrfacher Metrikauswertung ist dieser nur vorhanden, wenn
refitangegeben ist.- best_index_int
Der Index (der
cv_results_Arrays), der der besten Kandidaten-Parameter-Einstellung entspricht.Das Dictionary unter
search.cv_results_['params'][search.best_index_]gibt die Parameter-Einstellung für das beste Modell an, das den höchsten mittleren Score (search.best_score_) erzielt.Bei mehrfacher Metrikauswertung ist dieser nur vorhanden, wenn
refitangegeben ist.- scorer_function oder ein dict
Score-Funktion, die auf den zurückgelassenen Daten verwendet wird, um die besten Parameter für das Modell auszuwählen.
Bei mehrfacher Metrikauswertung enthält dieses Attribut das validierte
scoringDictionary, das den Scorer-Schlüssel dem Scorer-Callable zuordnet.- n_splits_int
Die Anzahl der Kreuzvalidierungs-Splits (Falten/Iterationen).
- refit_time_float
Sekunden, die für das Refitten des besten Modells auf dem gesamten Datensatz aufgewendet wurden.
Dies ist nur verfügbar, wenn
refitnicht False ist.Hinzugefügt in Version 0.20.
- multimetric_bool
Ob die Scorer mehrere Metriken berechnen oder nicht.
classes_ndarray der Form (n_classes,)Klassenbezeichnungen.
n_features_in_intAnzahl der während des fits gesehenen Merkmale.
- feature_names_in_ndarray mit Form (
n_features_in_,) Namen der während fit gesehenen Features. Nur definiert, wenn
best_estimator_definiert ist (siehe Dokumentation des Parametersrefitfür weitere Details) und wennbest_estimator_bei der Anpassungfeature_names_in_exponiert.Hinzugefügt in Version 1.0.
Siehe auch
ParameterGridGeneriert alle Kombinationen eines Hyperparameter-Grids.
train_test_splitHilfsfunktion zum Aufteilen der Daten in ein Entwicklungsset, das für die Anpassung einer GridSearchCV-Instanz verwendet werden kann, und ein Evaluationsset für seine endgültige Auswertung.
sklearn.metrics.make_scorerErstellt einen Scorer aus einer Leistungsmetrik oder Verlustfunktion.
Anmerkungen
Die ausgewählten Parameter sind diejenigen, die den Score auf den zurückgelassenen Daten maximieren, es sei denn, es wird explizit ein Score angegeben, in welchem Fall dieser verwendet wird.
Wenn
n_jobsauf einen Wert größer als eins gesetzt wurde, werden die Daten für jeden Punkt im Grid kopiert (und nichtn_jobsMal). Dies geschieht aus Effizienzgründen, wenn einzelne Jobs nur wenig Zeit benötigen, kann aber Fehler verursachen, wenn der Datensatz groß ist und nicht genügend Speicher verfügbar ist. Eine Umgehungsmöglichkeit in diesem Fall ist die Einstellung vonpre_dispatch. Dann wird der Speicher nurpre_dispatchMal kopiert. Ein sinnvoller Wert fürpre_dispatchist2 * n_jobs.Beispiele
>>> from sklearn import svm, datasets >>> from sklearn.model_selection import GridSearchCV >>> iris = datasets.load_iris() >>> parameters = {'kernel':('linear', 'rbf'), 'C':[1, 10]} >>> svc = svm.SVC() >>> clf = GridSearchCV(svc, parameters) >>> clf.fit(iris.data, iris.target) GridSearchCV(estimator=SVC(), param_grid={'C': [1, 10], 'kernel': ('linear', 'rbf')}) >>> sorted(clf.cv_results_.keys()) ['mean_fit_time', 'mean_score_time', 'mean_test_score',... 'param_C', 'param_kernel', 'params',... 'rank_test_score', 'split0_test_score',... 'split2_test_score', ... 'std_fit_time', 'std_score_time', 'std_test_score']
- decision_function(X)[Quelle]#
Ruft decision_function auf dem Estimator mit den besten gefundenen Parametern auf.
Nur verfügbar, wenn
refit=Trueund der zugrunde liegende Estimatordecision_functionunterstützt.- Parameter:
- Xindexierbar, Länge n_samples
Muss die Eingabeannahmen des zugrunde liegenden Estimators erfüllen.
- Gibt zurück:
- y_scorendarray der Form (n_samples,) oder (n_samples, n_classes) oder (n_samples, n_classes * (n_classes-1) / 2)
Ergebnis der Entscheidungsfunktion für
Xbasierend auf dem Estimator mit den besten gefundenen Parametern.
- fit(X, y=None, **params)[Quelle]#
Führt fit mit allen Parameter-Sätzen aus.
- Parameter:
- Xarray-ähnlich der Form (n_samples, n_features) oder (n_samples, n_samples)
Trainingsvektoren, wobei
n_samplesdie Anzahl der Samples undn_featuresdie Anzahl der Features ist. Für vordefinierte Kernel- oder Distanzmatrizen ist die erwartete Form von X (n_samples, n_samples).- yarray-ähnlich der Form (n_samples, n_output) oder (n_samples,), default=None
Ziel relativ zu X für Klassifikation oder Regression; None für unüberwachtes Lernen.
- **paramsDict von str -> Objekt
An den
fit-Methode des Estimators, des Scorers und des CV-Splitters übergebene Parameter.Wenn ein Fit-Parameter ein Array ist, dessen Länge gleich
num_samplesist, dann wird er zusammen mitXundydurch Kreuzvalidierung aufgeteilt. Zum Beispiel wird der Parameter sample_weight aufgeteilt, dalen(sample_weights) = len(X). Dieses Verhalten gilt jedoch nicht fürgroups, die an den über dencv-Parameter des Konstruktors konfigurierten Splitter übergeben werden. Somit wirdgroups*zur Durchführung der Aufteilung* verwendet und bestimmt, welche Samples jeder Seite einer Aufteilung zugewiesen werden.
- Gibt zurück:
- selfobject
Instanz des angepassten Estimators.
- get_metadata_routing()[Quelle]#
Holt das Metadaten-Routing dieses Objekts.
Bitte prüfen Sie im Benutzerhandbuch, wie der Routing-Mechanismus funktioniert.
Hinzugefügt in Version 1.4.
- Gibt zurück:
- routingMetadataRouter
Ein
MetadataRouter, der die Routing-Informationen kapselt.
- get_params(deep=True)[Quelle]#
Holt Parameter für diesen Schätzer.
- Parameter:
- deepbool, default=True
Wenn True, werden die Parameter für diesen Schätzer und die enthaltenen Unterobjekte, die Schätzer sind, zurückgegeben.
- Gibt zurück:
- paramsdict
Parameternamen, zugeordnet ihren Werten.
- inverse_transform(X)[Quelle]#
Ruft inverse_transform auf dem Estimator mit den besten gefundenen Parametern auf.
Nur verfügbar, wenn der zugrunde liegende Estimator
inverse_transformimplementiert undrefit=True.- Parameter:
- Xindexierbar, Länge n_samples
Muss die Eingabeannahmen des zugrunde liegenden Estimators erfüllen.
- Gibt zurück:
- X_original{ndarray, sparse matrix} der Form (n_samples, n_features)
Ergebnis der
inverse_transformFunktion fürXbasierend auf dem Estimator mit den besten gefundenen Parametern.
- predict(X)[Quelle]#
Ruft predict auf dem Estimator mit den besten gefundenen Parametern auf.
Nur verfügbar, wenn
refit=Trueund der zugrunde liegende Estimatorpredictunterstützt.- Parameter:
- Xindexierbar, Länge n_samples
Muss die Eingabeannahmen des zugrunde liegenden Estimators erfüllen.
- Gibt zurück:
- y_predndarray von Form (n_samples,)
Die vorhergesagten Labels oder Werte für
Xbasierend auf dem Estimator mit den besten gefundenen Parametern.
- predict_log_proba(X)[Quelle]#
Ruft predict_log_proba auf dem Estimator mit den besten gefundenen Parametern auf.
Nur verfügbar, wenn
refit=Trueund der zugrunde liegende Estimatorpredict_log_probaunterstützt.- Parameter:
- Xindexierbar, Länge n_samples
Muss die Eingabeannahmen des zugrunde liegenden Estimators erfüllen.
- Gibt zurück:
- y_predndarray der Form (n_samples,) oder (n_samples, n_classes)
Vorhergesagte Log-Wahrscheinlichkeiten der Klassen für
Xbasierend auf dem Estimator mit den besten gefundenen Parametern. Die Reihenfolge der Klassen entspricht der im angepassten Attribut classes_.
- predict_proba(X)[Quelle]#
Ruft predict_proba auf dem Estimator mit den besten gefundenen Parametern auf.
Nur verfügbar, wenn
refit=Trueund der zugrunde liegende Estimatorpredict_probaunterstützt.- Parameter:
- Xindexierbar, Länge n_samples
Muss die Eingabeannahmen des zugrunde liegenden Estimators erfüllen.
- Gibt zurück:
- y_predndarray der Form (n_samples,) oder (n_samples, n_classes)
Vorhergesagte Klassentwahrscheinlichkeiten für
Xbasierend auf dem Estimator mit den besten gefundenen Parametern. Die Reihenfolge der Klassen entspricht der im angepassten Attribut classes_.
- score(X, y=None, **params)[Quelle]#
Gibt den Score auf den gegebenen Daten zurück, wenn der Estimator refittet wurde.
Dies verwendet den durch
scoringdefinierten Score, sofern angegeben, andernfalls diebest_estimator_.scoreMethode.- Parameter:
- Xarray-like der Form (n_samples, n_features)
Eingabedaten, wobei
n_samplesdie Anzahl der Stichproben undn_featuresdie Anzahl der Merkmale ist.- yarray-ähnlich der Form (n_samples, n_output) oder (n_samples,), default=None
Ziel relativ zu X für Klassifikation oder Regression; None für unüberwachtes Lernen.
- **paramsdict
An den zugrunde liegenden Scorer(-s) zu übergebende Parameter.
Hinzugefügt in Version 1.4: Nur verfügbar, wenn
enable_metadata_routing=True. Siehe Benutzerhandbuch zur Metadaten-Weiterleitung für weitere Details.
- Gibt zurück:
- scorefloat
Der durch
scoringdefinierte Score, sofern angegeben, andernfalls diebest_estimator_.scoreMethode.
- score_samples(X)[Quelle]#
Ruft score_samples auf dem Estimator mit den besten gefundenen Parametern auf.
Nur verfügbar, wenn
refit=Trueund der zugrunde liegende Estimatorscore_samplesunterstützt.Hinzugefügt in Version 0.24.
- Parameter:
- XIterable
Daten, auf denen vorhergesagt werden soll. Muss die Eingabevoraussetzungen des zugrunde liegenden Estimators erfüllen.
- Gibt zurück:
- y_scorendarray der Form (n_samples,)
Die
best_estimator_.score_samplesMethode.
- set_params(**params)[Quelle]#
Setzt die Parameter dieses Schätzers.
Die Methode funktioniert sowohl bei einfachen Schätzern als auch bei verschachtelten Objekten (wie
Pipeline). Letztere haben Parameter der Form<component>__<parameter>, so dass es möglich ist, jede Komponente eines verschachtelten Objekts zu aktualisieren.- Parameter:
- **paramsdict
Schätzer-Parameter.
- Gibt zurück:
- selfestimator instance
Schätzer-Instanz.
- transform(X)[Quelle]#
Ruft transform auf dem Estimator mit den besten gefundenen Parametern auf.
Nur verfügbar, wenn der zugrunde liegende Estimator
transformunterstützt undrefit=True.- Parameter:
- Xindexierbar, Länge n_samples
Muss die Eingabeannahmen des zugrunde liegenden Estimators erfüllen.
- Gibt zurück:
- Xt{ndarray, sparse matrix} der Form (n_samples, n_features)
Xtransformiert in den neuen Raum basierend auf dem Estimator mit den besten gefundenen Parametern.
Galeriebeispiele#
Dimensionsreduktion auswählen mit Pipeline und GridSearchCV
Pipelining: Verkettung einer PCA und einer logistischen Regression
Schrumpfkovarianzschätzung: LedoitWolf vs OAS und Maximum-Likelihood
Modellauswahl mit Probabilistischem PCA und Faktorenanalyse (FA)
Vergleich von Random Forests und Histogram Gradient Boosting Modellen
Post-Hoc-Anpassung des Entscheidungsschwellenwerts für kostenempfindliches Lernen
Benutzerdefinierte Refit-Strategie einer Gitter-Suche mit Kreuzvalidierung
Modellkomplexität und kreuzvalidierter Score ausbalancieren
Statistischer Vergleich von Modellen mittels Gitter-Suche
Beispiel-Pipeline für Textmerkmal-Extraktion und -Bewertung
Demonstration von Multi-Metrik-Bewertung auf cross_val_score und GridSearchCV
Verschachtelte vs. nicht verschachtelte Kreuzvalidierung
Vergleich von zufälliger Suche und Gitter-Suche zur Hyperparameter-Schätzung
Vergleich zwischen Gitter-Suche und sukzessiver Halbierung
Übersicht über Multiklassen-Training Meta-Estimator
Klassifikationsgrenzen mit verschiedenen SVM-Kernen plotten