HalvingRandomSearchCV#

class sklearn.model_selection.HalvingRandomSearchCV(estimator, param_distributions, *, n_candidates='exhaust', factor=3, resource='n_samples', max_resources='auto', min_resources='smallest', aggressive_elimination=False, cv=5, scoring=None, refit=True, error_score=nan, return_train_score=True, random_state=None, n_jobs=None, verbose=0)[Quelle]#

Zufällige Suche nach Hyperparametern.

Die Suchstrategie beginnt damit, alle Kandidaten mit einer geringen Menge an Ressourcen zu bewerten und wählt iterativ die besten Kandidaten aus, wobei immer mehr Ressourcen verwendet werden.

Die Kandidaten werden zufällig aus dem Parameterraum gezogen und die Anzahl der gezogenen Kandidaten wird durch n_candidates bestimmt.

Lesen Sie mehr im Benutzerhandbuch.

Hinweis

Dieser Estimator ist vorerst noch experimentell: die Vorhersagen und die API können sich ohne jeglichen Deprecation Cycle ändern. Um ihn zu verwenden, müssen Sie explizit enable_halving_search_cv importieren.

>>> # explicitly require this experimental feature
>>> from sklearn.experimental import enable_halving_search_cv # noqa
>>> # now you can import normally from model_selection
>>> from sklearn.model_selection import HalvingRandomSearchCV
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_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_candidates„exhaust“ oder int, default=„exhaust“

Die Anzahl der zu ziehenden Kandidatenparameter in der ersten Iteration. Mit 'exhaust' werden genügend Kandidaten gezogen, sodass die letzte Iteration so viele Ressourcen wie möglich verwendet, basierend auf min_resources, max_resources und factor. In diesem Fall kann min_resources nicht 'exhaust' sein.

factorint oder float, default=3

Der „halving“-Parameter, der den Anteil der Kandidaten bestimmt, die für jede nachfolgende Iteration ausgewählt werden. Zum Beispiel bedeutet factor=3, dass nur ein Drittel der Kandidaten ausgewählt wird.

resource'n_samples' oder str, default=’n_samples’

Definiert die Ressource, die mit jeder Iteration zunimmt. Standardmäßig ist die Ressource die Anzahl der Samples. Sie kann auch auf jeden Parameter des Basis-Estimators gesetzt werden, der positive ganzzahlige Werte akzeptiert, z.B. 'n_iterations' oder 'n_estimators' für einen Gradient Boosting Estimator. In diesem Fall darf max_resources nicht 'auto' sein und muss explizit gesetzt werden.

max_resourcesint, default=’auto’

Die maximale Anzahl an Ressourcen, die ein Kandidat für eine gegebene Iteration verwenden darf. Standardmäßig ist dies n_samples, wenn resource='n_samples' (Standard), andernfalls wird ein Fehler ausgelöst.

min_resources{„exhaust“, „smallest“} oder int, default=„smallest“

Die minimale Ressourcenmenge, die ein Kandidat für eine gegebene Iteration verwenden darf. Äquivalent dazu definiert dies die Ressourcenmenge r0, die jeder Kandidat in der ersten Iteration erhält.

  • ‚smallest‘ ist eine Heuristik, die r0 auf einen kleinen Wert setzt

    • n_splits * 2 wenn resource='n_samples' für ein Regressionsproblem

    • n_classes * n_splits * 2 wenn resource='n_samples' für ein Klassifikationsproblem

    • 1 wenn resource != 'n_samples'

  • ‚exhaust‘ setzt r0 so, dass die **letzte** Iteration so viele Ressourcen wie möglich verwendet. Das heißt, die letzte Iteration verwendet den höchsten Wert, der kleiner als max_resources ist und sowohl ein Vielfaches von min_resources als auch von factor ist. Im Allgemeinen führt die Verwendung von ‚exhaust‘ zu einem genaueren Estimator, ist aber geringfügig zeitaufwändiger. ‚exhaust‘ ist nicht verfügbar, wenn n_candidates='exhaust'.

Beachten Sie, dass die in jeder Iteration verwendete Ressourcenmenge immer ein Vielfaches von min_resources ist.

aggressive_eliminationbool, default=False

Dies ist nur relevant, wenn nicht genügend Ressourcen vorhanden sind, um die verbleibenden Kandidaten nach der letzten Iteration auf maximal factor zu reduzieren. Wenn True, dann wird der Suchprozess so lange wiederholt, bis die Anzahl der Kandidaten klein genug ist. Dies ist standardmäßig False, was bedeutet, dass die letzte Iteration mehr als factor Kandidaten auswerten kann. Siehe Aggressive Eliminierung von Kandidaten für weitere Details.

cvint, Kreuzvalidierungsgenerator oder iterierbar, default=5

Bestimmt die Strategie der Kreuzvalidierungsaufteilung. Mögliche Eingaben für cv sind

  • 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.

Hinweis

Aus Implementierungsgründen müssen die von cv erzeugten Folds bei mehreren Aufrufen von cv.split() identisch sein. Für eingebaute scikit-learn Iteratoren kann dies durch Deaktivieren des Shufflings (shuffle=False) oder durch Setzen des random_state Parameters von cv auf eine Ganzzahl erreicht werden.

scoringstr oder callable, Standardwert=None

Scoring-Methode, die zur Bewertung der Vorhersagen auf dem Testdatensatz verwendet wird.

refitbool oder callable, default=True

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

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 neu angepasste Estimator ist unter dem Attribut best_estimator_ verfügbar und ermöglicht die direkte Verwendung von predict auf dieser HalvingRandomSearchCV Instanz.

Siehe dieses Beispiel für ein Beispiel, wie refit=callable verwendet wird, um Modellkomplexität und kreuzvalidierte Scores auszubalancieren.

error_score„raise“ oder numerisch

Wert, der dem Score zugewiesen wird, wenn beim Anpassen des Estimators ein Fehler auftritt. Wenn auf 'raise' gesetzt, wird der Fehler ausgelöst. Wenn ein numerischer Wert angegeben wird, wird FitFailedWarning ausgelöst. Dieser Parameter beeinflusst den Refit-Schritt nicht, der immer einen Fehler auslösen wird. Standard ist np.nan.

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.

random_stateint, RandomState-Instanz oder None, default=None

Pseudo-Zufallszahlengenerator-Zustand, der für das Subsampling des Datensatzes verwendet wird, wenn resources != 'n_samples'. Wird auch für zufällige gleichmäßige Stichproben aus Listen möglicher Werte anstelle von scipy.stats Verteilungen verwendet. Übergeben Sie eine Ganzzahl für reproduzierbare Ausgaben über mehrere Funktionsaufrufe hinweg. Siehe Glossar.

n_jobsint oder None, 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.

verboseint

Steuert die Ausführlichkeit: je höher, desto mehr Meldungen.

Attribute:
n_resources_Liste von int

Die in jeder Iteration verwendete Ressourcenmenge.

n_candidates_Liste von int

Die Anzahl der Kandidatenparameter, die in jeder Iteration ausgewertet wurden.

n_remaining_candidates_int

Die Anzahl der Kandidatenparameter, die nach der letzten Iteration übrig bleiben. Sie entspricht ceil(n_candidates[-1] / factor)

max_resources_int

Die maximale Anzahl an Ressourcen, die ein Kandidat für eine gegebene Iteration verwenden darf. Beachten Sie, dass die in jeder Iteration verwendete Ressourcenmenge ein Vielfaches von min_resources_ sein muss, daher kann die tatsächliche Ressourcenmenge in der letzten Iteration kleiner als max_resources_ sein.

min_resources_int

Die Ressourcenmenge, die für jeden Kandidaten in der ersten Iteration zugewiesen wird.

n_iterations_int

Die tatsächliche Anzahl der durchgeführten Iterationen. Dies ist gleich n_required_iterations_, wenn aggressive_elimination True ist. Andernfalls ist dies gleich min(n_possible_iterations_, n_required_iterations_).

n_possible_iterations_int

Die Anzahl der Iterationen, die möglich sind, beginnend mit min_resources_ Ressourcen und ohne max_resources_ zu überschreiten.

n_required_iterations_int

Die Anzahl der Iterationen, die erforderlich sind, um in der letzten Iteration weniger als factor Kandidaten zu erreichen, beginnend mit min_resources_ Ressourcen. Dies wird kleiner sein als n_possible_iterations_, wenn nicht genügend Ressourcen vorhanden sind.

cv_results_dict von numpy (masked) ndarrays

Ein dict mit Spaltenüberschriften als Schlüssel und Spalten als Werte, das in einen pandas DataFrame importiert werden kann. Es enthält viele Informationen zur Analyse der Suchergebnisse. Einzelheiten finden Sie im Benutzerhandbuch. Ein Beispiel für die Analyse von cv_results_ finden Sie unter Statistischer Vergleich von Modellen mit Grid Search.

best_estimator_estimator oder dict

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.

best_score_float

Mittlerer kreuzvalidierter Score des best_estimator.

best_params_dict

Parameter-Einstellung, die die besten Ergebnisse auf den zurückgelassenen Daten lieferte.

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.

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.

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.

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

HalvingGridSearchCV

Suche über ein Raster von Parametern mittels sukzessiver Halbierung.

Anmerkungen

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

Alle Parameterkombinationen, die mit einem NaN bewertet werden, teilen sich den niedrigsten Rang.

Beispiele

>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.experimental import enable_halving_search_cv  # noqa
>>> from sklearn.model_selection import HalvingRandomSearchCV
>>> from scipy.stats import randint
>>> import numpy as np
...
>>> X, y = load_iris(return_X_y=True)
>>> clf = RandomForestClassifier(random_state=0)
>>> np.random.seed(0)
...
>>> param_distributions = {"max_depth": [3, None],
...                        "min_samples_split": randint(2, 11)}
>>> search = HalvingRandomSearchCV(clf, param_distributions,
...                                resource='n_estimators',
...                                max_resources=10,
...                                random_state=0).fit(X, y)
>>> search.best_params_
{'max_depth': None, 'min_samples_split': 10, 'n_estimators': 9}
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, Form (n_samples, n_features)

Trainingsvektor, wobei n_samples die Anzahl der Stichproben und n_features die Anzahl der Merkmale ist.

yarray-like, shape (n_samples,) oder (n_samples, n_output), optional

Ziel relativ zu X für Klassifikation oder Regression; None für unüberwachtes Lernen.

**paramsDict von String -> Objekt

Parameter, die an die fit Methode des Estimators übergeben 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.