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 einervsMethode 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
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 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.
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 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=callableverwendet 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)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 : 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 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 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
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
GridSearchCVFührt eine vollständige Suche über ein Gitter von Parametern durch.
ParameterSamplerEin 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=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_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_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#
Gesichtserkennungsbeispiel mit Eigenfaces und SVMs
Vergleich von Kernel Ridge und Gauß-Prozess-Regression
Beispiel-Pipeline für Textmerkmal-Extraktion und -Bewertung
Vergleich von zufälliger Suche und Gitter-Suche zur Hyperparameter-Schätzung