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 den cv-Parameter) optimiert. Die Leistung jedes RFE-Selektors wird anhand von scoring fü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:
estimatorEstimator instance

Eine überwachte Lern-Schätzinstanz mit einer fit-Methode, die Informationen über die Merkmalbedeutung entweder über ein coef_-Attribut oder über ein feature_importances_-Attribut liefert.

stepint oder float, default=1

Wenn größer oder gleich 1, dann entspricht step der (ganzzahligen) Anzahl der Merkmale, die in jeder Iteration entfernt werden sollen. Wenn im Bereich (0.0, 1.0), dann entspricht step dem Prozentsatz (abgerundet) der Merkmale, die in jeder Iteration entfernt werden sollen. Beachten Sie, dass die letzte Iteration möglicherweise weniger als step Merkmale entfernt, um min_features_to_select zu 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_select nicht durch step teilbar 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.

  • CV-Splitter,

  • Eine iterierbare Liste, die (Trainings-, Test-) Splits als Indizes-Arrays liefert.

Für ganzzahlige/None-Eingaben wird, wenn y binär oder multiklass ist, StratifiedKFold verwendet. Wenn der Estimator kein Klassifikator ist oder wenn y weder binär noch multiklass ist, wird KFold verwendet.

Siehe Benutzerhandbuch für die verschiedenen Kreuzvalidierungsstrategien, die hier verwendet werden können.

Geändert in Version 0.22: Standardwert von cv von None von 3-Falt auf 5-Falt geändert.

scoringstr oder callable, Standardwert=None

Bewertungsmethode zur Auswertung der Leistung von RFE-Selektoren. Optionen

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. None bedeutet 1, es sei denn, Sie befinden sich in einem joblib.parallel_backend-Kontext. -1 bedeutet 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_ oder feature_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 von TransformedTargetRegressor oder named_steps.clf.feature_importances_ im Fall von Pipeline, bei der der letzte Schritt clf genannt 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.

Attribute:
classes_ndarray der Form (n_classes,)

Klassenbezeichnungen, die verfügbar sind, wenn estimator ein Klassifikator ist.

estimator_Estimator instance

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 X Merkmalnamen 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

RFE

Rekursive Merkmalseliminierung.

Anmerkungen

Die Größe aller Werte in cv_results_ ist gleich ceil((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 LogisticRegression finden 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.float32 konvertiert 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_samples die Anzahl der Stichproben und n_features die 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 von sklearn.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 X und y mit optionalen Parametern fit_params an und gibt eine transformierte Version von X zurü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_features None ist, werden feature_names_in_ als Merkmalnamen verwendet. Wenn feature_names_in_ nicht definiert ist, werden die folgenden Eingabemerkmalsnamen generiert: ["x0", "x1", ..., "x(n_features_in_ - 1)"].

  • Wenn input_features ein Array-ähnliches Objekt ist, muss input_features mit feature_names_in_ übereinstimmen, wenn feature_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 indices False ist, ist dies ein boolesches Array der Form [# Eingabemerkmale], bei dem ein Element True ist, wenn sein entsprechendes Merkmal zur Beibehaltung ausgewählt wurde. Wenn indices True 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]

X mit Spalten von Nullen, die dort eingefügt werden, wo Merkmale durch transform entfernt 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 von sklearn.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.float32 konvertiert 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 scoring auf 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 von sklearn.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 transform und fit_transform.

  • "default": Standardausgabeformat eines Transformers

  • "pandas": DataFrame-Ausgabe

  • "polars": Polars-Ausgabe

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

transform(X)[source]#

Reduziert X auf die ausgewählten Merkmale.

Parameter:
Xarray der Form [n_samples, n_features]

Die Eingabestichproben.

Gibt zurück:
X_rarray der Form [n_samples, n_selected_features]

Die Eingabebeispiele nur mit den ausgewählten Merkmalen.