Ejercicio de RFE sobre validación cruzada

| Última modificación: 30 de septiembre de 2024 | Tiempo de Lectura: 2 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

¿Sabías que se puede aplicar RFE sobre validación cruzada? En este artículo veremos cómo funciona el Recursive Features Elimination en un ejercicio de validación cruzada. Vamos a implementar el algoritmo de selección de características RFE sobre validación cruzada, para que así, automáticamente, podamos abordar una selección de características.

RFE sobre validación cruzada: ejercicio

#RFE sobre validación cruzada
from sklearn.model selection import StratifiedKFold
from sklearn.feature selection import RFECV

SVC = SVC (kernel- linear) #sólo funciona con Kernel Lineal

rfecv = RFECV (estimator = svc, step = 1, cv = 5, scoring = 'accuracy')
rfecv.fit (X_train, y_train)

plt.figure ()
plt.xlabel ("# variables")
plt.ylabel ("5 - fold ACC")
plt.plot (range (1, len (rfecv.grid_scores_) + 1), rfecv.grid_scores_, ' -o ')
plt.show ()

print ('Variables seleccionadas: ', [f for f in features [rfecv.support_]])
print ('Acc (TEST): %0.2f% rfecv.score (x_test, y_test))
#No devuelve std, no podemos pintar barras error
RFE sobre validación cruzada

¿Qué es lo que nos dice esta gráfica? Pues que el mejor número de variables es 4. Imaginemos que, en vez de 4, el resultado nos hubiera arrojado 8, ¿lo habríamos cogido? Probablemente no, porque vemos que la curva se estabiliza a partir de 4, lo cual indica que no habría mucha varianza a partir de este número y probablemente lo único que ganaríamos sería un subidón en los costos de entrenamiento.

Aunque no le hemos dicho qué variables debe coger, por defecto cogerá las 4 primeras, que están ordenadas ya por relevancia.

rfecv.n_features_

4

A continuación, lo que haremos será crear un RFE con un svc y con un n_features_to_select.

#RFE sobre validación cruzada
from sklearn, feature_selection import RFE

nfeaturesOptimo = rfecv.n_features
rfe = RFE (estimator = svc, step = 1, n_features_to_select = nfeaturesOptimo).fit (X_train, y_train)
print ('Variables seleccionadas: ', [f for f in features [rfe.support_]])

print ('Acc (TEST): %0.2f'% rfe.score (X_test, y_test))

Variables seleccionadas: [‘Pregnancies’, ‘Glucose’, ‘BMI’, ‘DiabetesPedigreeFunction’]

Acc (TEST): 0.76

Lo que nos aparece, después de hacer una selección de características que no es aleatoria, con las 4 variables que se han seleccionado, lo que obtenemos es un accuracy de 0.76.

Si quieres seguir aprendiendo sobre el mundo del Big Data, una de las disciplinas mejor pagadas en la actualidad, te recomendamos el Big Data, Inteligencia Artificial & Machine Learning Full Stack Bootcamp, una formación intensiva en la que adquirirás todas las herramientas teóricas y prácticas que te permitirán dar un paso más allá en tu vida profesional en pocos meses. ¡No esperes más, sigue tu camino hacia el éxito y solicita información ahora!

Sandra Navarro

Business Intelligence & Big Data Advisor & Coordinadora del Bootcamp en Data Science, Big Data & Machine Learning.

Posts más leídos

¡CONVOCATORIA ABIERTA!

Big Data, IA & Machine Learning

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado