RFECV#
- class sklearn.feature_selection.RFECV(estimator, *, step=1, min_features_to_select=1, cv=None, scoring=None, verbose=0, n_jobs=None, importance_getter='auto')[source]#
Rekursive Merkmals-Eliminierung mit Kreuzvalidierung zur Merkmalsauswahl.
Die Anzahl der ausgewählten Merkmale wird automatisch durch das Anpassen eines
RFE-Selektors auf die verschiedenen Kreuzvalidierungs-Splits (bereitgestellt durch dencv-Parameter) optimiert. Die Leistung jedesRFE-Selektors wird anhand vonscoringfür verschiedene Anzahlen ausgewählter Merkmale ausgewertet und aggregiert. Schließlich werden die Scores über die Folds gemittelt und die Anzahl der ausgewählten Merkmale auf die Anzahl der Merkmale gesetzt, die den Kreuzvalidierungs-Score maximieren.Siehe Glossareintrag für Cross-validation-Schätzer.
Mehr dazu im Benutzerhandbuch.
- Parameter:
- estimator
Estimatorinstance Eine überwachte Lern-Schätzinstanz mit einer
fit-Methode, die Informationen über die Merkmalbedeutung entweder über eincoef_-Attribut oder über einfeature_importances_-Attribut liefert.- stepint oder float, default=1
Wenn größer oder gleich 1, dann entspricht
stepder (ganzzahligen) Anzahl der Merkmale, die in jeder Iteration entfernt werden sollen. Wenn im Bereich (0.0, 1.0), dann entsprichtstepdem Prozentsatz (abgerundet) der Merkmale, die in jeder Iteration entfernt werden sollen. Beachten Sie, dass die letzte Iteration möglicherweise weniger alsstepMerkmale entfernt, ummin_features_to_selectzu erreichen.- min_features_to_selectint, default=1
Die minimale Anzahl der auszuwählenden Merkmale. Diese Anzahl von Merkmalen wird immer ausgewertet, auch wenn die Differenz zwischen der ursprünglichen Merkmalsanzahl und
min_features_to_selectnicht durchstepteilbar ist.Hinzugefügt in Version 0.20.
- cvint, Kreuzvalidierungsgenerator oder iterierbar, Standardwert=None
Bestimmt die Strategie der Kreuzvalidierungsaufteilung. Mögliche Eingaben für cv sind
None, um die standardmäßige 5-fache Kreuzvalidierung zu verwenden,
Ganzzahl, um die Anzahl der Folds anzugeben.
Eine iterierbare Liste, die (Trainings-, Test-) Splits als Indizes-Arrays liefert.
Für ganzzahlige/None-Eingaben wird, wenn
ybinär oder multiklass ist,StratifiedKFoldverwendet. Wenn der Estimator kein Klassifikator ist oder wennyweder binär noch multiklass ist, wirdKFoldverwendet.Siehe Benutzerhandbuch für die verschiedenen Kreuzvalidierungsstrategien, die hier verwendet werden können.
Geändert in Version 0.22: Standardwert von
cvvon None von 3-Falt auf 5-Falt geändert.- scoringstr oder callable, Standardwert=None
Bewertungsmethode zur Auswertung der Leistung von
RFE-Selektoren. Optionenstr: 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.
- verboseint, default=0
Steuert die Ausführlichkeit der Ausgabe.
- n_jobsint oder None, default=None
Anzahl der Kerne, die parallel für die Anpassung über die Folds ausgeführt werden sollen.
Nonebedeutet 1, es sei denn, Sie befinden sich in einemjoblib.parallel_backend-Kontext.-1bedeutet die Verwendung aller Prozessoren. Weitere Details finden Sie im Glossar.Hinzugefügt in Version 0.18.
- importance_getterstr oder aufrufbar, Standardwert=’auto’
Wenn 'auto', wird die Merkmalbedeutung entweder über ein
coef_oderfeature_importances_Attribut des Schätzers verwendet.Akzeptiert auch einen String, der einen Attributnamen/Pfad zur Extraktion der Merkmalbedeutung angibt. Zum Beispiel
regressor_.coef_im Fall vonTransformedTargetRegressorodernamed_steps.clf.feature_importances_im Fall vonPipeline, bei der der letzte Schrittclfgenannt wird.Wenn
aufrufbar, überschreibt dies den Standard-Merkmalswichtigkeits-Getter. Die aufrufbare Funktion wird mit dem angepassten Schätzer übergeben und sollte die Wichtigkeit für jedes Merkmal zurückgeben.Hinzugefügt in Version 0.24.
- estimator
- Attribute:
classes_ndarray der Form (n_classes,)Klassenbezeichnungen, die verfügbar sind, wenn
estimatorein Klassifikator ist.- estimator_
Estimatorinstance Der angepasste Schätzer, der zur Auswahl der Merkmale verwendet wurde.
- cv_results_dict of ndarrays
Alle Arrays (Werte des Dictionaries) sind aufsteigend nach der Anzahl der verwendeten Merkmale sortiert (d.h. das erste Element des Arrays repräsentiert die Modelle, die die geringste Anzahl von Merkmalen verwendet haben, während das letzte Element die Modelle repräsentiert, die alle verfügbaren Merkmale verwendet haben).
Hinzugefügt in Version 1.0.
Dieses Dictionary enthält die folgenden Schlüssel
- split(k)_test_scorendarray of shape (n_subsets_of_features,)
Die Kreuzvalidierungs-Scores über den (k)-ten Fold.
- mean_test_scorendarray of shape (n_subsets_of_features,)
Mittelwert der Scores über die Folds.
- std_test_scorendarray of shape (n_subsets_of_features,)
Standardabweichung der Scores über die Folds.
- n_featuresndarray of shape (n_subsets_of_features,)
Anzahl der bei jedem Schritt verwendeten Merkmale.
Hinzugefügt in Version 1.5.
- split(k)_rankingndarray of shape (n_subsets_of_features,)
Die Kreuzvalidierungs-Ränge über den (k)-ten Fold. Ausgewählte (d.h. als optimal geschätzte) Merkmale erhalten den Rang 1. Illustration in Rekursive Merkmalseliminierung mit Kreuzvalidierung
Hinzugefügt in Version 1.7.
- split(k)_supportndarray of shape (n_subsets_of_features,)
Die Kreuzvalidierungs-Unterstützungen über den (k)-ten Fold. Die Unterstützung ist die Maske der ausgewählten Merkmale.
Hinzugefügt in Version 1.7.
- n_features_int
Die Anzahl der mit Kreuzvalidierung ausgewählten Merkmale.
- n_features_in_int
Anzahl der während fit gesehenen Merkmale. Nur definiert, wenn der zugrunde liegende Schätzer ein solches Attribut nach dem Training bereitstellt.
Hinzugefügt in Version 0.24.
- feature_names_in_ndarray mit Form (
n_features_in_,) Namen der während fit gesehenen Merkmale. Nur definiert, wenn
XMerkmalnamen hat, die alle Zeichenketten sind.Hinzugefügt in Version 1.0.
- ranking_narray of shape (n_features,)
Die Merkmalrangfolge, so dass
ranking_[i]der Rangposition des i-ten Merkmals entspricht. Ausgewählte (d.h. als optimal geschätzte) Merkmale erhalten den Rang 1.- support_ndarray of shape (n_features,)
Die Maske der ausgewählten Merkmale.
Siehe auch
RFERekursive Merkmalseliminierung.
Anmerkungen
Die Größe aller Werte in
cv_results_ist gleichceil((n_features - min_features_to_select) / step) + 1, wobei step die Anzahl der in jeder Iteration entfernten Merkmale ist.Erlaubt NaN/Inf im Eingabe, wenn der zugrundeliegende Schätzer dies ebenfalls tut.
Referenzen
[1]Guyon, I., Weston, J., Barnhill, S., & Vapnik, V., “Gene selection for cancer classification using support vector machines”, Mach. Learn., 46(1-3), 389–422, 2002.
Beispiele
Das folgende Beispiel zeigt, wie die a priori nicht bekannten 5 informativen Merkmale im Friedman #1-Datensatz abgerufen werden.
>>> from sklearn.datasets import make_friedman1 >>> from sklearn.feature_selection import RFECV >>> from sklearn.svm import SVR >>> X, y = make_friedman1(n_samples=50, n_features=10, random_state=0) >>> estimator = SVR(kernel="linear") >>> selector = RFECV(estimator, step=1, cv=5) >>> selector = selector.fit(X, y) >>> selector.support_ array([ True, True, True, True, True, False, False, False, False, False]) >>> selector.ranking_ array([1, 1, 1, 1, 1, 6, 4, 3, 2, 5])
Ein detailliertes Beispiel für die Verwendung von RFECV zur Merkmalsauswahl beim Trainieren eines
LogisticRegressionfinden Sie unter Rekursive Merkmalseliminierung mit Kreuzvalidierung.- decision_function(X)[source]#
Berechnet die Entscheidungsfunktion von
X.- Parameter:
- X{array-like oder sparse matrix} der Form (n_samples, n_features)
Die Eingabestichproben. Intern wird sie in
dtype=np.float32konvertiert und, wenn eine Sparse-Matrix bereitgestellt wird, in eine Sparse-csr_matrix.
- Gibt zurück:
- scorearray, shape = [n_samples, n_classes] or [n_samples]
Die Entscheidungfunktion der Eingabestichproben. Die Reihenfolge der Klassen entspricht der im Attribut classes_. Regression und binäre Klassifizierung erzeugen ein Array der Form [n_samples].
- fit(X, y, **params)[source]#
Passen Sie das RFE-Modell an und optimieren Sie automatisch die Anzahl der ausgewählten Merkmale.
- Parameter:
- X{array-like, sparse matrix} der Form (n_samples, n_features)
Trainingsvektor, wobei
n_samplesdie Anzahl der Stichproben undn_featuresdie Gesamtzahl der Merkmale ist.- yarray-like von Form (n_samples,)
Zielwerte (ganze Zahlen für Klassifizierung, reelle Zahlen für Regression).
- **paramsDict von str -> Objekt
An den
fit-Methode des Estimators, des Scorers und des CV-Splitters übergebene Parameter.Hinzugefügt in Version 1.6: Nur verfügbar, wenn
enable_metadata_routing=True, was durch Setzen vonsklearn.set_config(enable_metadata_routing=True)erfolgen kann. Siehe Metadaten-Routing Benutzerhandbuch für weitere Details.
- Gibt zurück:
- selfobject
Angepasster Schätzer.
- fit_transform(X, y=None, **fit_params)[source]#
An Daten anpassen, dann transformieren.
Passt den Transformer an
Xundymit optionalen Parameternfit_paramsan und gibt eine transformierte Version vonXzurück.- Parameter:
- Xarray-like der Form (n_samples, n_features)
Eingabestichproben.
- yarray-like der Form (n_samples,) oder (n_samples, n_outputs), Standardwert=None
Zielwerte (None für unüberwachte Transformationen).
- **fit_paramsdict
Zusätzliche Fit-Parameter. Nur übergeben, wenn der Estimator zusätzliche Parameter in seiner
fit-Methode akzeptiert.
- Gibt zurück:
- X_newndarray array der Form (n_samples, n_features_new)
Transformiertes Array.
- get_feature_names_out(input_features=None)[source]#
Maskiert die Namen der Merkmale gemäß den ausgewählten Merkmalen.
- Parameter:
- input_featuresarray-like von str oder None, default=None
Eingabemerkmale.
Wenn
input_featuresNoneist, werdenfeature_names_in_als Merkmalnamen verwendet. Wennfeature_names_in_nicht definiert ist, werden die folgenden Eingabemerkmalsnamen generiert:["x0", "x1", ..., "x(n_features_in_ - 1)"].Wenn
input_featuresein Array-ähnliches Objekt ist, mussinput_featuresmitfeature_names_in_übereinstimmen, wennfeature_names_in_definiert ist.
- Gibt zurück:
- feature_names_outndarray von str-Objekten
Transformierte Merkmalnamen.
- get_metadata_routing()[source]#
Holt das Metadaten-Routing dieses Objekts.
Bitte prüfen Sie im Benutzerhandbuch, wie der Routing-Mechanismus funktioniert.
Hinzugefügt in Version 1.6.
- Gibt zurück:
- routingMetadataRouter
Ein
MetadataRouter, der die Routing-Informationen kapselt.
- get_params(deep=True)[source]#
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.
- get_support(indices=False)[source]#
Gibt eine Maske oder einen ganzzahligen Index der ausgewählten Merkmale zurück.
- Parameter:
- indicesbool, Standardwert=False
Wenn True, ist der Rückgabewert ein Array von ganzen Zahlen anstelle einer booleschen Maske.
- Gibt zurück:
- supportarray
Ein Index, der die beibehaltenen Merkmale aus einem Merkmalsvektor auswählt. Wenn
indicesFalse ist, ist dies ein boolesches Array der Form [# Eingabemerkmale], bei dem ein Element True ist, wenn sein entsprechendes Merkmal zur Beibehaltung ausgewählt wurde. WennindicesTrue ist, ist dies ein ganzzahliges Array der Form [# Ausgabemerkmale], dessen Werte Indizes in den Eingabemerkmalsvektor sind.
- inverse_transform(X)[source]#
Kehrt die Transformationsoperation um.
- Parameter:
- Xarray der Form [n_samples, n_selected_features]
Die Eingabestichproben.
- Gibt zurück:
- X_originalarray der Form [n_samples, n_original_features]
Xmit Spalten von Nullen, die dort eingefügt werden, wo Merkmale durchtransformentfernt worden wären.
- predict(X, **predict_params)[source]#
Reduzieren Sie X auf die ausgewählten Merkmale und sagen Sie mit dem Schätzer voraus.
- Parameter:
- Xarray der Form [n_samples, n_features]
Die Eingabestichproben.
- **predict_paramsdict
Parameter, die an die
predict-Methode des zugrunde liegenden Schätzers weitergeleitet werden sollen.Hinzugefügt in Version 1.6: Nur verfügbar, wenn
enable_metadata_routing=True, was durch Setzen vonsklearn.set_config(enable_metadata_routing=True)erfolgen kann. Siehe Metadaten-Routing Benutzerhandbuch für weitere Details.
- Gibt zurück:
- yarray of shape [n_samples]
Die vorhergesagten Zielwerte.
- predict_log_proba(X)[source]#
Sagt die logarithmierte Klassenwahrscheinlichkeit für X voraus.
- Parameter:
- Xarray der Form [n_samples, n_features]
Die Eingabestichproben.
- Gibt zurück:
- parray of shape (n_samples, n_classes)
Die Klassen-Log-Wahrscheinlichkeiten der Eingabestichproben. Die Reihenfolge der Klassen entspricht der in dem Attribut classes_.
- predict_proba(X)[source]#
Sagt die Klassenwahrscheinlichkeiten für X voraus.
- Parameter:
- X{array-like oder sparse matrix} der Form (n_samples, n_features)
Die Eingabestichproben. Intern wird sie in
dtype=np.float32konvertiert und, wenn eine Sparse-Matrix bereitgestellt wird, in eine Sparse-csr_matrix.
- Gibt zurück:
- parray of shape (n_samples, n_classes)
Die Klassenwahrscheinlichkeiten der Eingabesamplings. Die Reihenfolge der Klassen entspricht der im Attribut classes_.
- score(X, y, **score_params)[source]#
Score mit der Option
scoringauf den gegebenen Testdaten und -labels.- Parameter:
- Xarray-like der Form (n_samples, n_features)
Teststichproben.
- yarray-like von Form (n_samples,)
Wahre Labels für X.
- **score_paramsdict
Parameter, die an die
score-Methode des zugrunde liegenden Scorers übergeben werden sollen.Hinzugefügt in Version 1.6: Nur verfügbar, wenn
enable_metadata_routing=True, was durch Setzen vonsklearn.set_config(enable_metadata_routing=True)erfolgen kann. Siehe Metadaten-Routing Benutzerhandbuch für weitere Details.
- Gibt zurück:
- scorefloat
Score von self.predict(X) bezüglich y, definiert durch
scoring.
- set_output(*, transform=None)[source]#
Ausgabecontainer festlegen.
Siehe Einführung in die set_output API für ein Beispiel zur Verwendung der API.
- Parameter:
- transform{“default”, “pandas”, “polars”}, default=None
Konfiguriert die Ausgabe von
transformundfit_transform."default": Standardausgabeformat eines Transformers"pandas": DataFrame-Ausgabe"polars": Polars-AusgabeNone: Die Transformationskonfiguration bleibt unverändert
Hinzugefügt in Version 1.4: Die Option
"polars"wurde hinzugefügt.
- Gibt zurück:
- selfestimator instance
Schätzer-Instanz.
- set_params(**params)[source]#
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.
Galeriebeispiele#
Rekursive Merkmalseliminierung mit Kreuzvalidierung