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_candidatesbestimmt.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_cvimportieren.>>> # 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
scoreFunktion bereitstellen, oderscoringmuss ü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_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_resourcesundfactor. In diesem Fall kannmin_resourcesnicht '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_resourcesnicht '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, wennresource='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
r0auf einen kleinen Wert setztn_splits * 2wennresource='n_samples'für ein Regressionsproblemn_classes * n_splits * 2wennresource='n_samples'für ein Klassifikationsproblem1wennresource != 'n_samples'
‚exhaust‘ setzt
r0so, dass die **letzte** Iteration so viele Ressourcen wie möglich verwendet. Das heißt, die letzte Iteration verwendet den höchsten Wert, der kleiner alsmax_resourcesist und sowohl ein Vielfaches vonmin_resourcesals auch vonfactorist. Im Allgemeinen führt die Verwendung von ‚exhaust‘ zu einem genaueren Estimator, ist aber geringfügig zeitaufwändiger. ‚exhaust‘ ist nicht verfügbar, wennn_candidates='exhaust'.
Beachten Sie, dass die in jeder Iteration verwendete Ressourcenmenge immer ein Vielfaches von
min_resourcesist.- 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
factorzu reduzieren. WennTrue, dann wird der Suchprozess so lange wiederholt, bis die Anzahl der Kandidaten klein genug ist. Dies ist standardmäßigFalse, was bedeutet, dass die letzte Iteration mehr alsfactorKandidaten 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)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.
Hinweis
Aus Implementierungsgründen müssen die von
cverzeugten Folds bei mehreren Aufrufen voncv.split()identisch sein. Für eingebautescikit-learnIteratoren kann dies durch Deaktivieren des Shufflings (shuffle=False) oder durch Setzen desrandom_stateParameters voncvauf eine Ganzzahl erreicht werden.- scoringstr oder callable, Standardwert=None
Scoring-Methode, die zur Bewertung der Vorhersagen auf dem Testdatensatz verwendet wird.
str: siehe Zeichenkettennamen für Bewerter für Optionen.
callable: Ein Scorer-Callable-Objekt (z. B. Funktion) mit der Signatur
scorer(estimator, X, y). Siehe Callable Scorer für Details.None: das Standard-Bewertungskriterium desestimatorwird verwendet.
- 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
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 neu angepasste Estimator ist unter dem Attribut
best_estimator_verfügbar und ermöglicht die direkte Verwendung vonpredictauf dieserHalvingRandomSearchCVInstanz.Siehe dieses Beispiel für ein Beispiel, wie
refit=callableverwendet 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 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.- 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.
Nonebedeutet 1, es sei denn, es befindet sich in einemjoblib.parallel_backendKontext.-1bedeutet 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 alsmax_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_, wennaggressive_eliminationTrueist. Andernfalls ist dies gleichmin(n_possible_iterations_, n_required_iterations_).- n_possible_iterations_int
Die Anzahl der Iterationen, die möglich sind, beginnend mit
min_resources_Ressourcen und ohnemax_resources_zu überschreiten.- n_required_iterations_int
Die Anzahl der Iterationen, die erforderlich sind, um in der letzten Iteration weniger als
factorKandidaten zu erreichen, beginnend mitmin_resources_Ressourcen. Dies wird kleiner sein alsn_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
DataFrameimportiert werden kann. Es enthält viele Informationen zur Analyse der Suchergebnisse. Einzelheiten finden Sie im Benutzerhandbuch. Ein Beispiel für die Analyse voncv_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
refitnicht False ist.- 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
HalvingGridSearchCVSuche ü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=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, Form (n_samples, n_features)
Trainingsvektor, wobei
n_samplesdie Anzahl der Stichproben undn_featuresdie 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
fitMethode 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_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#
Vorhersageintervalle für Gradient Boosting Regression