RFE

Esta clase requiere ser instanciada pasando como argumentos el modelo que va a asignar los resultados a cada característica y el número de características a extraer. Dando por sentado que ya hemos cargado el dataset wine, comenzamos importando la clase RFE:

from sklearn.feature_selection import RFE

Como modelo podemos usar RandomForestClassifier:

from sklearn.ensemble import RandomForestClassifier
model = RandomForestClassifier()

Ahora instanciamos la clase RFE indicando que queremos extraer 5 características y que la eliminación de éstas se hará de una en una (el valor del parámetro step es 1 por defecto, por lo que, en este caso, no sería imprescindible indicarlo):

selector = RFE(estimator = model, n_features_to_select = 5, step = 1)

Lo entrenamos pasando las estructuras X e y conteniendo las características predictivas y la variable objetivo:

selector.fit(X, y)

RFE

Podemos visualizar el ranking dado a las características (un valor menor indica mejores resultados obtenidos):

selector.ranking_
array([1, 3, 4, 5, 1, 2, 1, 9, 6, 1, 8, 7, 1])

El método .get_support() nos devuelve un array de booleanos indicando si la característica en cuestión ha sido o no seleccionada:

selector.get_support()
array([ True, False, False, False,  True, False,  True, False, False,
        True, False, False,  True])

Por último, podemos acceder a los nombres de las características que se han seleccionado usando el método .get_feature_names_out():

selector.get_feature_names_out()
array(['alcohol', 'magnesium', 'flavanoids', 'color_intensity', 'proline'],
      dtype=object)