Selección vía regularización y wine

Instanciemos de nuevo el algoritmo de regresión logística especificando regularización L1 y entrenémoslo con el dataset wine:

model = LogisticRegression(penalty = "l1", solver = "liblinear")
model.fit(X, y)

Selección vía regularización y wine

Veamos cuáles han sido los coeficientes asignados a cada característica:

model.coef_
array([[ 0.67045148, -1.13834399, -0.71570356,  0.48003916,  0.03538675,
         0.        , -0.36025152,  0.        ,  0.        , -0.86369322,
         0.        ,  0.        , -0.01678117]])

Y comprobemos, para el valor del parámetro C por defecto (1.0), cuáles son los nombres de las características predictivas relevantes: extraemos los índices de los valores no nulos del array anterior:

np.nonzero(model.coef_)[1]
array([ 0,  1,  2,  3,  4,  6,  9, 12], dtype=int64)

Y, usando, este resultado, extremos los nombres de las características seleccionadas:

list(X.columns[np.nonzero(model.coef_)[1]])
['alcohol',
 'malic_acid',
 'ash',
 'alcalinity_of_ash',
 'magnesium',
 'flavanoids',
 'color_intensity',
 'proline']