RandomizedSearchCV#

class sklearn.model_selection.RandomizedSearchCV(estimator, param_distributions, *, n_iter=10, scoring=None, n_jobs=None, refit=True, cv=None, verbose=0, pre_dispatch='2*n_jobs', random_state=None, error_score=nan, return_train_score=False)[Quelle]#

Zufällige Suche nach Hyperparametern.

RandomizedSearchCV 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 verwendeten Estimators zur Anwendung dieser Methoden werden durch eine kreuzvalidierte Suche über Parameterkombinationen optimiert.

Im Gegensatz zu GridSearchCV werden nicht alle Parameterwerte ausprobiert, sondern eine feste Anzahl von Parameterkombinationen aus den angegebenen Verteilungen gezogen. Die Anzahl der ausprobierten Parameterkombinationen wird durch n_iter angegeben.

Wenn alle Parameter als Liste angegeben werden, wird eine Stichprobe ohne Ersatz durchgeführt. Wenn mindestens ein Parameter als Verteilung angegeben wird, wird eine Stichprobe mit Ersatz verwendet. Es wird dringend empfohlen, kontinuierliche Verteilungen für kontinuierliche Parameter zu verwenden.

Lesen Sie mehr im Benutzerhandbuch.

Hinzugefügt in Version 0.14.

Parameter:
estimatorEstimator-Objekt

Für jeden Gitterpunkt wird ein Objekt dieses Typs instanziiert. Dies wird vorausgesetzt, dass es die scikit-learn Estimator-Schnittstelle implementiert. Entweder muss der Estimator eine `score`-Funktion bereitstellen, oder `scoring` muss übergeben werden.

param_distributionsdict oder Liste von dicts

Wörterbuch mit Parameternamen (str) als Schlüssel und Verteilungen oder Listen von Parametern zum Ausprobieren. Verteilungen müssen eine rvs Methode zur Stichprobenziehung bereitstellen (wie z. B. die von scipy.stats.distributions). Wenn eine Liste angegeben wird, wird sie gleichmäßig gezogen. Wenn eine Liste von Dictionaries angegeben wird, wird zuerst ein Dictionary gleichmäßig gezogen und dann ein Parameter unter Verwendung dieses Dictionaries wie oben gezogen.

n_iterint, Standard=10

Anzahl der gezogenen Parameterkombinationen. n_iter tauscht Laufzeit gegen die Qualität der Lösung.

scoringstr, aufrufbar, Liste, Tupel oder dict, Standard=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 Metriknamen als Schlüssel und aufrufbaren Objekten als Werte.

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

Wenn None, wird die score-Methode des Estimators verwendet.

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 aufrufbar, Standard=True

Refitt einen Estimator mit den besten gefundenen Parametern auf dem gesamten Datensatz.

Bei mehrfacher Metrikbewertung muss dies ein `str` sein, der den Scorer bezeichnet, der verwendet wird, um die besten Parameter für die Neuanpassung des Estimators am Ende zu finden.

Wenn es andere Erwägungen als die maximale Punktzahl bei der Auswahl eines besten Estimators gibt, kann `refit` auf eine Funktion gesetzt werden, die den ausgewählten `best_index_` basierend auf den `cv_results_` zurückgibt. In diesem Fall werden `best_estimator_` und `best_params_` gemäß dem zurückgegebenen `best_index_` gesetzt, während das Attribut `best_score_` nicht verfügbar ist.

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

Auch bei mehrfacher Metrikbewertung sind die Attribute `best_index_`, `best_score_` und `best_params_` nur verfügbar, wenn `refit` gesetzt ist, und alle werden in Bezug auf diesen spezifischen Scorer bestimmt.

Siehe den Parameter `scoring`, um mehr über mehrfache Metrikbewertung zu erfahren.

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 Aufrufbare 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 : die Punktzahl wird ebenfalls angezeigt;

  • >3 : die Indizes der Faltung und der Kandidatenparameter werden zusammen mit der Startzeit der Berechnung angezeigt.

pre_dispatchint oder str, Standard='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“

random_stateint, RandomState-Instanz oder None, default=None

Zustand des Pseudo-Zufallszahlengenerators, der für die zufällige gleichmäßige Stichprobe aus Listen möglicher Werte anstelle von scipy.stats-Verteilungen verwendet wird. Geben Sie eine Ganzzahl für reproduzierbare Ergebnisse über mehrere Funktionsaufrufe hinweg an. Siehe Glossar.

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

Wert, der der Punktzahl zugewiesen wird, wenn bei der Anpassung des Estimators ein Fehler auftritt. Wenn auf 'raise' gesetzt, wird der Fehler ausgelöst. Wenn ein numerischer Wert angegeben wird, wird eine FitFailedWarning ausgelöst. Dieser Parameter beeinflusst nicht den Neuanpassungsschritt, der immer den Fehler auslöst.

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 Dict mit Schlüsseln als Spaltenüberschriften und Werten als Spalten, das in einen pandas `DataFrame` importiert werden kann.

Zum Beispiel die unten angegebene Tabelle

param_kernel

param_gamma

split0_test_score

rank_test_score

‘rbf’

0.1

0.80

1

‘rbf’

0.2

0.84

3

‘rbf’

0.3

0.70

2

wird durch ein `cv_results_`-Dict von repräsentiert

{
'param_kernel' : masked_array(data = ['rbf', 'rbf', 'rbf'],
                              mask = False),
'param_gamma'  : masked_array(data = [0.1 0.2 0.3], mask = False),
'split0_test_score'  : [0.80, 0.84, 0.70],
'split1_test_score'  : [0.82, 0.50, 0.70],
'mean_test_score'    : [0.81, 0.67, 0.70],
'std_test_score'     : [0.01, 0.24, 0.00],
'rank_test_score'    : [1, 3, 2],
'split0_train_score' : [0.80, 0.92, 0.70],
'split1_train_score' : [0.82, 0.55, 0.70],
'mean_train_score'   : [0.81, 0.74, 0.70],
'std_train_score'    : [0.01, 0.19, 0.00],
'mean_fit_time'      : [0.73, 0.63, 0.43],
'std_fit_time'       : [0.01, 0.02, 0.01],
'mean_score_time'    : [0.01, 0.06, 0.04],
'std_score_time'     : [0.00, 0.00, 0.00],
'params'             : [{'kernel' : 'rbf', 'gamma' : 0.1}, ...],
}

Für ein Beispiel zur Analyse von `cv_results_` siehe Statistischer Vergleich von Modellen mittels Grid Search.

HINWEIS

Der Schlüssel `'params'` wird verwendet, um eine Liste von Parameterkombinations-Dicts 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 Metrikbewertung sind die Punktzahlen für alle Scorer im `cv_results_`-Dict unter Schlüsseln verfügbar, die mit dem Namen des Scorers enden (`'_<scorer_name>'`) anstelle von `'_score'`, wie oben gezeigt. ('split0_test_precision', 'mean_train_precision' usw.)

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.

Bei mehrfacher Metrikbewertung ist dieses Attribut nur vorhanden, wenn `refit` angegeben ist.

Siehe den Parameter `refit` für weitere Informationen zu zulässigen Werten.

best_score_float

Durchschnittliche kreuzvalidierte Punktzahl des `best_estimator`.

Bei mehrfacher Metrikbewertung ist dies nicht verfügbar, wenn `refit` `False` ist. Siehe den Parameter `refit` für weitere Informationen.

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 Metrikbewertung ist dies nicht verfügbar, wenn `refit` `False` ist. Siehe den Parameter `refit` für weitere Informationen.

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 Metrikbewertung ist dies nicht verfügbar, wenn `refit` `False` ist. Siehe den Parameter `refit` für weitere Informationen.

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 Metrikbewertung enthält dieses Attribut das validierte `scoring`-Dict, das den Scorer-Schlüssel dem Scorer-Aufruf 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

GridSearchCV

Führt eine vollständige Suche über ein Gitter von Parametern durch.

ParameterSampler

Ein Generator für Parameterkombinationen, konstruiert aus param_distributions.

Anmerkungen

Die ausgewählten Parameter sind diejenigen, die die Punktzahl der zurückgehaltenen Daten gemäß dem Scoring-Parameter maximieren.

Wenn `n_jobs` auf einen Wert größer als eins gesetzt wurde, werden die Daten für jede Parameterkombination kopiert (und nicht `n_jobs`-mal). Dies geschieht aus Effizienzgründen, wenn einzelne Jobs nur sehr wenig Zeit in Anspruch nehmen, kann aber zu Fehlern führen, wenn der Datensatz groß ist und nicht genügend Speicher verfügbar ist. Eine Abhilfe in diesem Fall ist, `pre_dispatch` zu setzen. Dann wird der Speicher nur `pre_dispatch`-mal kopiert. Ein sinnvoller Wert für `pre_dispatch` ist `2 * n_jobs`.

Beispiele

>>> from sklearn.datasets import load_iris
>>> from sklearn.linear_model import LogisticRegression
>>> from sklearn.model_selection import RandomizedSearchCV
>>> from scipy.stats import uniform
>>> iris = load_iris()
>>> logistic = LogisticRegression(solver='saga', tol=1e-2, max_iter=200,
...                               random_state=0)
>>> distributions = dict(C=uniform(loc=0, scale=4),
...                      l1_ratio=[0, 1])
>>> clf = RandomizedSearchCV(logistic, distributions, random_state=0)
>>> search = clf.fit(iris.data, iris.target)
>>> search.best_params_
{'C': np.float64(2.195...), 'l1_ratio': 1}
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 Merkmale ist. Für vordefinierte Kernel- oder Distanzmatrizen hat X die erwartete Form (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, 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`, das an den Splitter übergeben wird, der über den `cv`-Parameter des Konstruktors konfiguriert ist. Somit wird `groups` verwendet, *um die Aufteilung durchzuführen*, 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.