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 score Funktion bereitstellen, oder scoring muss ü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 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 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. None bedeutet 1, es sei denn, es befindet sich in einem joblib.parallel_backend Kontext. -1 bedeutet die Verwendung aller Prozessoren. Siehe Glossar für weitere Details.

Geändert in Version v0.20: Standardwert von n_jobs von 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 str sein, 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 refit auf eine Funktion gesetzt werden, die den ausgewählten best_index_ basierend auf cv_results_ zurückgibt. In diesem Fall werden best_estimator_ und best_params_ entsprechend dem zurückgegebenen best_index_ gesetzt, während das Attribut best_score_ nicht verfügbar ist.

Der refittete Estimator ist unter dem Attribut best_estimator_ verfügbar und ermöglicht die direkte Verwendung von predict auf dieser GridSearchCV-Instanz.

Ebenfalls bei mehrfacher Metrikauswertung sind die Attribute best_index_, best_score_ und best_params_ nur verfügbar, wenn refit gesetzt 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 refit entworfen wird.

Siehe dieses Beispiel für ein Beispiel, wie refit=callable verwendet 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)KFold anzugeben,

  • CV-Splitter,

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

Für Ganzzahl-/None-Eingaben, wenn der Schätzer ein Klassifikator ist und y entweder binär oder multiklassig ist, wird StratifiedKFold verwendet. In allen anderen Fällen wird KFold verwendet. Diese Splitter werden mit shuffle=False instanziiert, 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 Attribut cv_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 True auf False geä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 DataFrame importiert 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_time und std_score_time sind 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 refit für weitere Informationen zu erlaubten Werten.

best_score_float

Mittlerer kreuzvalidierter Score des best_estimator.

Bei mehrfacher Metrikauswertung ist dieser nur vorhanden, wenn refit angegeben ist.

Dieses Attribut ist nicht verfügbar, wenn refit eine 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 refit angegeben 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 refit angegeben 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 scoring Dictionary, 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 refit nicht 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_int

Anzahl 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 Parameters refit für weitere Details) und wenn best_estimator_ bei der Anpassung feature_names_in_ exponiert.

Hinzugefügt in Version 1.0.

Siehe auch

ParameterGrid

Generiert alle Kombinationen eines Hyperparameter-Grids.

train_test_split

Hilfsfunktion 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_scorer

Erstellt 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_jobs auf einen Wert größer als eins gesetzt wurde, werden die Daten für jeden Punkt im Grid kopiert (und nicht n_jobs Mal). 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 von pre_dispatch. Dann wird der Speicher nur pre_dispatch Mal kopiert. Ein sinnvoller Wert für pre_dispatch ist 2 * 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=True und der zugrunde liegende Estimator decision_function unterstü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 X basierend 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_samples die Anzahl der Samples und n_features die 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_samples ist, dann wird er zusammen mit X und y durch Kreuzvalidierung aufgeteilt. Zum Beispiel wird der Parameter sample_weight aufgeteilt, da len(sample_weights) = len(X). Dieses Verhalten gilt jedoch nicht für groups, die an den über den cv-Parameter des Konstruktors konfigurierten Splitter übergeben werden. Somit wird groups *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_transform implementiert und refit=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_transform Funktion für X basierend 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=True und der zugrunde liegende Estimator predict unterstü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 X basierend 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=True und der zugrunde liegende Estimator predict_log_proba unterstü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 X basierend 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=True und der zugrunde liegende Estimator predict_proba unterstü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 X basierend 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 scoring definierten Score, sofern angegeben, andernfalls die best_estimator_.score Methode.

Parameter:
Xarray-like der Form (n_samples, n_features)

Eingabedaten, wobei n_samples die Anzahl der Stichproben und n_features die 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 scoring definierte Score, sofern angegeben, andernfalls die best_estimator_.score Methode.

score_samples(X)[Quelle]#

Ruft score_samples auf dem Estimator mit den besten gefundenen Parametern auf.

Nur verfügbar, wenn refit=True und der zugrunde liegende Estimator score_samples unterstü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_samples Methode.

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 transform unterstützt und refit=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)

X transformiert in den neuen Raum basierend auf dem Estimator mit den besten gefundenen Parametern.