La clase RFECV (Recursive Feature Elimination with Cross Validation) es semejante a RFE en lo que se refiere a la eliminación recursiva de características para obtener un subconjunto de las características originales, pero hay entre ellas un par de diferencias relevantes. Para empezar, RFECV valida el modelo usando validación cruzada, cuya estrategia se indica usando el parámetro cv. Otra diferencia importante es que RFE tiene como objetivo obtener un número específico de características, independientemente de si son características más o menos relevantes para el modelo, mientras que RFECV se centra en encontrar la cantidad óptima de características basándose en el rendimiento del modelo.
Por ejemplo, volvamos a aplicar RandomForestClassifier al dataset wine, seleccionando un mínimo de 5 características predictivas:
from sklearn.ensemble import RandomForestClassifier
estimator = model,
min_features_to_select = 5,
step = 1,
cv = 5
)
En la clase RFECV hay que indicar el número mínimo de características a seleccionar en el parámetro min_features_to_select. Ahora entrenamos el selector:
Los métodos y atributos disponibles para esta clase son semejantes a los disponibles para RFE. Por ejemplo, para obtener los nombres de las características seleccionadas podemos recurrir al método .get_feature_names_out():
'total_phenols', 'flavanoids', 'color_intensity', 'proline'],
dtype=object)