Veamos un ejemplo aplicando el algoritmo de regresión logística al dataset Iris. Cargamos el dataset, nos quedamos solo con dos especies de flores (para trabajar en un escenario de clasificación binaria y evitar tener que entrenar más de un modelo) y extraemos las características predictivas y las etiquetas codificadas:
iris = iris[iris.species.isin(["setosa", "versicolor"])]
y = iris.species.astype("category").cat.codes
E importamos el algoritmo:
Regularización L2
Entrenemos el algoritmo aplicando regularización L2 (es la opción por defecto, de forma que no sería necesario especificarlo en el siguiente código):
model.fit(X, y)
Podemos visualizar los pesos por los que se van a multiplicar los valores de entrada con el atributo .coef_:
Y el bias con el atributo .intercept_:
Comprobamos que ninguno de los cinco parámetros es nulo.
Regularización L1
Repitamos ahora el entrenamiento especificando regularización L1. Obsérvese que, en este caso, debemos especificar un optimizador distinto al aplicado por defecto, lbfgs, pues éste no soporta este tipo de regularización:
model.fit(X, y)
Ahora, los pesos son:
Y el bias:
En este caso, tres de los cinco parámetros son nulos. Recordemos que, en cualquier caso, la fuerza de la regularización en la clase LogisticRegression de Scikit-Learn es controlable mediante el parámetro C, por lo que podríamos forzar el entrenamiento para que el número de parámetros nulos fuese mayor o menor.