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)
model.fit(X, y)
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]])
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']
'malic_acid',
'ash',
'alcalinity_of_ash',
'magnesium',
'flavanoids',
'color_intensity',
'proline']