Ejemplo de regresión logística

Apliquemos en algoritmo de regresión logística al dataset iris. Comencemos cargándolo y quedémonos solo con las species versicolor y virginica (clases no linealmente separables):

iris = sns.load_dataset("iris")
iris = iris[iris.species.isin(["versicolor", "virginica"])]

También aquí vamos a recurrir a codificar la etiqueta convirtiéndola a tipo categórico y extrayendo los códigos asignados (veremos otros métodos más adelante):

iris["label"] = iris.species.astype("category").cat.codes
iris.sample(5)
Ejemplo de regresión logística

Extraemos ahora las características predictivas (X) y la etiqueta (y):

X = iris.drop(["species", "label"], axis = 1)
y = iris.label

Dividimos ambas estructuras en un bloque de entrenamiento y otro de validación:

X_train, X_test, y_train, y_test = train_test_split(X, y, random_state = 0)

E importamos el algoritmo, lo instanciamos y lo entrenamos con el dataset de entrenamiento:

from sklearn.linear_model import LogisticRegression
model = LogisticRegression(solver = 'lbfgs')
model.fit(X_train, y_train)

Ejemplo de regresión logística

Por último, podemos confirmar el porcentaje de muestras bien clasificadas del dataset de validación ejecutando el método .score() del modelo (que ya sabemos que devuelve dicha métrica en tanto por uno):

model.score(X_test, y_test)
0.92

La documentación ofrecida por Scikit-Learn al respecto de este algoritmo está disponible en esta página.

En este ejemplo se ha utilizado como algoritmo de optimización "lbfgs". Aunque la documentación no es muy extensa, podemos ver algunas de las diferencias entre los algoritmos disponibles (lbfgs, liblinear, newton-cg, newton-cholesky, sag y sagaaquí. Comprobamos que se distinguen principalmente en la versión de descenso de gradiente usada, así como en la regularización aplicada (de lo que se hablará más adelante).