Calculez la relation entre chaque variable explicative et la variable objective et sélectionnez la caractéristique associée avec le plus haut degré de certitude.
Sélectionnez le k supérieur des variables explicatives. Normalement, l'argument score_func
spécifie f_classif
(valeur par défaut) pour la classification et f_regression
pour la régression. Spécifiez le nombre d'entités à sélectionner dans l'argument «k».
from sklearn.datasets import load_boston
from sklearn.feature_selection import SelectKBest, f_regression
boston = load_boston()
X = boston.data
y = boston.target
#Sélectionnez 5 quantités de fonctionnalités
selector = SelectKBest(score_func=f_regression, k=5)
selector.fit(X, y)
mask = selector.get_support() #Obtenez le masque indiquant si chaque fonctionnalité est sélectionnée ou non
print(boston.feature_names)
print(mask)
#Obtenir uniquement la colonne de caractéristiques sélectionnée
X_selected = selector.transform(X)
print("X.shape={}, X_selected.shape={}".format(X.shape, X_selected.shape))
production
['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)
Sélectionnez les k% supérieurs des variables explicatives. Normalement, l'argument score_func
spécifie f_classif
(valeur par défaut) pour la classification et f_regression
pour la régression. Spécifiez le rapport (0 à 100) du montant de la caractéristique à sélectionner dans l'argument «centile».
from sklearn.datasets import load_boston
from sklearn.feature_selection import SelectPercentile, f_regression
boston = load_boston()
X = boston.data
y = boston.target
#40 des fonctionnalités%choisir
selector = SelectPercentile(score_func=f_regression, percentile=40)
selector.fit(X, y)
mask = selector.get_support()
print(boston.feature_names)
print(mask)
#Obtenir uniquement la colonne de caractéristiques sélectionnée
X_selected = selector.transform(X)
print("X.shape={}, X_selected.shape={}".format(X.shape, X_selected.shape))
production
['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)
Utilisez «mode» pour définir le mode («percentile», «k_best», «fpr», «fdr», «fwe»), et utilisez «param» pour définir les paramètres de chaque mode. Par exemple
selector = GenericUnivariateSelect(mode='percentile', score_func=f_regression, param=40)
Quand
selector = SelectPercentile(score_func=f_regression, percentile=40)
Sont égaux.
Sélectionnez une fonction à l'aide de l'attribut feature_importances_, qui représente l'importance de la fonction obtenue dans le modèle.
Spécifiez l'estimateur et le seuil «seuil» comme arguments.
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
#Utilisez RandomForestRegressor comme estimateur. Sélectionnez-en un avec une importance médiane ou supérieure
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)
#Obtenir uniquement la colonne de caractéristiques sélectionnée
X_selected = selector.transform(X)
print("X.shape={}, X_selected.shape={}".format(X.shape, X_selected.shape))
production
['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)
Opération dans laquelle des fonctionnalités qui ne sont pas du tout utilisées sont ajoutées une par une jusqu'à ce qu'une certaine norme soit satisfaite, ou des fonctionnalités sont supprimées une par une de l'état dans lequel toutes les fonctionnalités sont utilisées. Le montant de la fonction est sélectionné en répétant.
RFE (Recursive Feature Elimination) commence avec toutes les fonctionnalités, crée un modèle et supprime les fonctionnalités les moins importantes du modèle. Ensuite, créez à nouveau un modèle et supprimez les caractéristiques les moins importantes. Ce processus est répété jusqu'à ce qu'un nombre prédéterminé de caractéristiques soit atteint.
Pour l'argument, spécifiez l'estimateur et le nombre de caractéristiques n_features_to_select
.
(Nombre de fonctionnalités --n_features_to_select) Il faut beaucoup de temps pour créer un modèle => supprimer des fonctionnalités.
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
#Utilisez RandomForestRegressor comme estimateur. Sélectionnez 5 quantités de fonctionnalités
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)
#Obtenir uniquement la colonne de caractéristiques sélectionnée
X_selected = selector.transform(X)
print("X.shape={}, X_selected.shape={}".format(X.shape, X_selected.shape))
production
['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