[PYTHON] Funktionsauswahl durch sklearn.feature_selection

Univariate Statistiken

Berechnen Sie die Beziehung zwischen jeder erklärenden Variablen und der Zielvariablen und wählen Sie das zugehörige Merkmal mit höchster Sicherheit aus.

SelectKBest

Wählen Sie das obere k der erklärenden Variablen aus. Normalerweise gibt das Argument "score_func" "f_classif" (Standardwert) für die Klassifizierung und "f_regression" für die Regression an. Geben Sie die Anzahl der Features an, die im Argument "k" ausgewählt werden sollen.

from sklearn.datasets import load_boston
from sklearn.feature_selection import SelectKBest, f_regression

boston = load_boston()
X = boston.data
y = boston.target

#Wählen Sie 5 Funktionsgrößen aus
selector = SelectKBest(score_func=f_regression, k=5) 
selector.fit(X, y)
mask = selector.get_support()    #Holen Sie sich die Maske, ob jedes Feature ausgewählt ist oder nicht
print(boston.feature_names)
print(mask)

#Holen Sie sich nur die ausgewählte Feature-Spalte
X_selected = selector.transform(X)
print("X.shape={}, X_selected.shape={}".format(X.shape, X_selected.shape))

Ausgabe

['CRIM' 'ZN' 'INDUS' 'CHAS' 'NOX' 'RM' 'AGE' 'DIS' 'RAD' 'TAX' 'PTRATIO'
 'B' 'LSTAT']
[False False  True False False  True False False False  True  True False
  True]
X.shape=(506, 13), X_selected.shape=(506, 5)

SelectPercentile

Wählen Sie die oberen k% der erklärenden Variablen aus. Normalerweise gibt das Argument "score_func" "f_classif" (Standardwert) für die Klassifizierung und "f_regression" für die Regression an. Geben Sie das Verhältnis (0 zu 100) des Merkmalsbetrags an, der im Argument "Perzentil" ausgewählt werden soll.

from sklearn.datasets import load_boston
from sklearn.feature_selection import SelectPercentile, f_regression

boston = load_boston()
X = boston.data
y = boston.target

#40 der Funktionen%wählen
selector = SelectPercentile(score_func=f_regression, percentile=40) 
selector.fit(X, y)
mask = selector.get_support()
print(boston.feature_names)
print(mask)

#Holen Sie sich nur die ausgewählte Feature-Spalte
X_selected = selector.transform(X)
print("X.shape={}, X_selected.shape={}".format(X.shape, X_selected.shape))

Ausgabe

['CRIM' 'ZN' 'INDUS' 'CHAS' 'NOX' 'RM' 'AGE' 'DIS' 'RAD' 'TAX' 'PTRATIO'
 'B' 'LSTAT']
[False False  True False False  True False False False  True  True False
  True]
X.shape=(506, 13), X_selected.shape=(506, 5)

GenericUnivariateSelect

Verwenden Sie "mode", um den Modus festzulegen ("Perzentil", "k_best", "fpr", "fdr", "fwe"), und verwenden Sie "param", um die Parameter für jeden Modus festzulegen. Zum Beispiel

selector = GenericUnivariateSelect(mode='percentile', score_func=f_regression, param=40)

Wann

selector = SelectPercentile(score_func=f_regression, percentile=40) 

Sind gleich.

Modellbasierte Funktionsauswahl

Wählen Sie ein Feature mit dem Attribut feature_importances_ aus, das die Wichtigkeit des im Modell erhaltenen Features darstellt.

SelectFromModel

Geben Sie den Schätzer und den Schwellenwert "Schwellenwert" als Argumente an.

from sklearn.datasets import load_boston
from sklearn.feature_selection import SelectFromModel
from sklearn.ensemble import RandomForestRegressor

boston = load_boston()
X = boston.data
y = boston.target

#Verwenden Sie RandomForestRegressor als Schätzer. Wählen Sie eine mit der Wichtigkeit des Medians oder höher
selector = SelectFromModel(RandomForestRegressor(n_estimators=100, random_state=42), threshold="median")    
selector.fit(X, y)
mask = selector.get_support()
print(boston.feature_names)
print(mask)

#Holen Sie sich nur die ausgewählte Feature-Spalte
X_selected = selector.transform(X)
print("X.shape={}, X_selected.shape={}".format(X.shape, X_selected.shape))

Ausgabe

['CRIM' 'ZN' 'INDUS' 'CHAS' 'NOX' 'RM' 'AGE' 'DIS' 'RAD' 'TAX' 'PTRATIO'
 'B' 'LSTAT']
[ True False False False  True  True False  True False  True  True False
  True]
X.shape=(506, 13), X_selected.shape=(506, 7)

Wiederholte Funktionsauswahl

Eine Operation, bei der Features, die überhaupt nicht verwendet werden, einzeln hinzugefügt werden, bis ein bestimmter Standard erfüllt ist, oder Features einzeln aus dem Status entfernt werden, in dem alle Features verwendet werden. Der Funktionsbetrag wird durch Wiederholen ausgewählt.

RFE

RFE (Recursive Feature Elimination) beginnt mit allen Features, erstellt ein Modell und entfernt die am wenigsten wichtigen Features im Modell. Erstellen Sie dann erneut ein Modell und entfernen Sie die am wenigsten wichtigen Funktionen. Dieser Vorgang wird wiederholt, bis eine vorbestimmte Anzahl von Merkmalen erreicht ist.

Geben Sie für das Argument den Schätzer und die Anzahl der Features "n_features_to_select" an. (Anzahl der Features --n_features_to_select) Das Erstellen eines Modells dauert lange => Features löschen.

from sklearn.datasets import load_boston
from sklearn.feature_selection import RFE
from sklearn.ensemble import RandomForestRegressor

boston = load_boston()
X = boston.data
y = boston.target

#Verwenden Sie RandomForestRegressor als Schätzer. Wählen Sie 5 Funktionsgrößen aus
selector = RFE(RandomForestRegressor(n_estimators=100, random_state=42), n_features_to_select=5)
selector.fit(X, y)
mask = selector.get_support()
print(boston.feature_names)
print(mask)

#Holen Sie sich nur die ausgewählte Feature-Spalte
X_selected = selector.transform(X)
print("X.shape={}, X_selected.shape={}".format(X.shape, X_selected.shape))

Ausgabe

['CRIM' 'ZN' 'INDUS' 'CHAS' 'NOX' 'RM' 'AGE' 'DIS' 'RAD' 'TAX' 'PTRATIO'
 'B' 'LSTAT']
[ True False False False  True  True False  True False False False False
  True]
X.shape=(506, 13), X_selected.shape=(506, 5)

Referenz

Recommended Posts

Funktionsauswahl durch sklearn.feature_selection
Merkmalsauswahl durch genetischen Algorithmus
Funktionsauswahl durch Null-Wichtigkeiten
Feature-Auswahldatensätze
[Übersetzung] scikit-learn 0.18 Benutzerhandbuch 1.13 Funktionsauswahl
Predictive Power Score für die Funktionsauswahl
Unterstützung der Vektorregression und Merkmalsauswahl
Feature-Generierung mit Pandas gruppieren nach
Einheit 5 Feature Engineering für die Auswahl maschineller Lernfunktionen