¿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
¿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!