Scikit Learn - Regresión logística

La regresión logística, a pesar de su nombre, es un algoritmo de clasificación más que un algoritmo de regresión. Basado en un conjunto dado de variables independientes, se utiliza para estimar un valor discreto (0 o 1, sí / no, verdadero / falso). También se llama logit o clasificador MaxEnt.

Básicamente, mide la relación entre la variable dependiente categórica y una o más variables independientes estimando la probabilidad de ocurrencia de un evento usando su función logística.

sklearn.linear_model.LogisticRegression es el módulo utilizado para implementar la regresión logística.

Parámetros

La siguiente tabla enumera los parámetros utilizados por Logistic Regression módulo -

No Señor Descripción de parámetros
1

penalty - str, 'L1', 'L2', 'elasticnet' o ninguno, opcional, predeterminado = 'L2'

Este parámetro se utiliza para especificar la norma (L1 o L2) utilizada en la penalización (regularización).

2

dual - Booleano, opcional, predeterminado = Falso

Se utiliza para la formulación dual o primaria, mientras que la formulación dual solo se implementa para la penalización L2.

3

tol - flotante, opcional, predeterminado = 1e-4

Representa la tolerancia para los criterios de parada.

4

C - flotante, opcional, predeterminado = 1.0

Representa el inverso de la fuerza de regularización, que siempre debe ser un valor flotante positivo.

5

fit_intercept - Booleano, opcional, predeterminado = Verdadero

Este parámetro especifica que se debe agregar una constante (sesgo o intersección) a la función de decisión.

6

intercept_scaling - flotante, opcional, predeterminado = 1

Este parámetro es útil cuando

  • la solver ‘liblinear’ se utiliza

  • fit_intercept está establecido en verdadero

7

class_weight - dict o 'balanceado' opcional, predeterminado = ninguno

Representa los pesos asociados con las clases. Si usamos la opción predeterminada, significa que se supone que todas las clases tienen un peso uno. Por otro lado, si elige class_weight: balanceado, usará los valores de y para ajustar automáticamente los pesos.

8

random_state - int, instancia de RandomState o None, opcional, predeterminado = ninguno

Este parámetro representa la semilla del número pseudoaleatorio generado que se usa al mezclar los datos. Las siguientes son las opciones

  • int - en este caso, random_state es la semilla utilizada por el generador de números aleatorios.

  • RandomState instance- en este caso, random_state es el generador de números aleatorios.

  • None - en este caso, el generador de números aleatorios es la instancia de RandonState utilizada por np.random.

9

solver - str, {'newton-cg', 'lbfgs', 'liblinear', 'saag', 'saga'}, opcional, predeterminado = 'liblinear'

Este parámetro representa qué algoritmo utilizar en el problema de optimización. Las siguientes son las propiedades de las opciones bajo este parámetro:

  • liblinear- Es una buena opción para pequeños conjuntos de datos. También maneja la penalización L1. Para problemas multiclase, se limita a esquemas de uno versus descanso.

  • newton-cg - Maneja solo penalización L2.

  • lbfgs- Para problemas multiclase, maneja pérdidas multinomiales. También maneja solo la penalización L2.

  • saga- Es una buena opción para grandes conjuntos de datos. Para problemas multiclase, también maneja pérdidas multinomiales. Junto con la penalización L1, también admite la penalización 'elasticnet'.

  • sag- También se utiliza para grandes conjuntos de datos. Para problemas multiclase, también maneja pérdidas multinomiales.

10

max_iter - int, opcional, predeterminado = 100

Como sugiere el nombre, representa el número máximo de iteraciones necesarias para que los solucionadores converjan.

11

multi_class - str, {'ovr', 'multinomial', 'auto'}, opcional, predeterminado = 'ovr'

  • ovr - Para esta opción, se ajusta un problema binario para cada etiqueta.

  • multimonial- Para esta opción, la pérdida minimizada es el ajuste de pérdida multinomial en toda la distribución de probabilidad. No podemos usar esta opción si solver = 'liblinear'.

  • auto - Esta opción seleccionará 'ovr' si solver = 'liblinear' o los datos son binarios, de lo contrario elegirá 'multinomial'.

12

verbose - int, opcional, predeterminado = 0

De forma predeterminada, el valor de este parámetro es 0, pero para liblinear y lbfgs solver deberíamos establecer detallado en cualquier número positivo.

13

warm_start - bool, opcional, predeterminado = falso

Con este parámetro establecido en True, podemos reutilizar la solución de la llamada anterior para ajustarla como inicialización. Si elegimos default, es decir, falso, borrará la solución anterior.

14

n_jobs - int o None, opcional, predeterminado = None

Si multi_class = 'ovr', este parámetro representa el número de núcleos de CPU utilizados al paralelizar clases. Se ignora cuando solver = 'liblinear'.

15

l1_ratio - float o None, opcional, dgtefault = None

Se utiliza en caso de que pena = 'elasticnet'. Es básicamente el parámetro de mezcla Elastic-Net con 0 <= l1_ratio> = 1.

Atributos

La siguiente tabla consta de los atributos utilizados por Logistic Regression módulo -

No Señor Atributos y descripción
1

coef_ - matriz, forma (n_features,) o (n_classes, n_features)

Se utiliza para estimar los coeficientes de las características en la función de decisión. Cuando el problema dado es binario, tiene la forma (1, n_features).

2

Intercept_ - matriz, forma (1) o (n_clases)

Representa la constante, también conocida como sesgo, agregada a la función de decisión.

3

classes_ - matriz, forma (n_classes)

Proporcionará una lista de etiquetas de clase conocidas por el clasificador.

4

n_iter_ - matriz, forma (n_classes) o (1)

Devuelve el número real de iteraciones para todas las clases.

Ejemplo de implementación

El siguiente script de Python proporciona un ejemplo simple de implementación de regresión logística en iris conjunto de datos de scikit-learn -

from sklearn import datasets
from sklearn import linear_model
from sklearn.datasets import load_iris
X, y = load_iris(return_X_y = True)
LRG = linear_model.LogisticRegression(
   random_state = 0,solver = 'liblinear',multi class = 'auto'
)
.fit(X, y)
LRG.score(X, y)

Salida

0.96

El resultado muestra que el modelo de regresión logística anterior dio una precisión del 96 por ciento.