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.
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)
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)
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.
Wählen Sie ein Feature mit dem Attribut feature_importances_ aus, das die Wichtigkeit des im Modell erhaltenen Features darstellt.
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)
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 (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)
Recommended Posts