Regresión logística en Python
Logit modela una probabilidad; los coeficientes son log odds.
import numpy as np
import statsmodels.api as sm
rng = np.random.default_rng(8)
practica = rng.uniform(0, 60, size=300)
logits = -3 + 0.09 * practica
aprobado = rng.binomial(1, 1 / (1 + np.exp(-logits)))
X = sm.add_constant(practica)
modelo = sm.Logit(aprobado, X).fit(disp=False)
print(modelo.params.round(4))
print("odds ratio por sesión:", round(float(np.exp(modelo.params[1])), 4))
print(round(modelo.prsquared, 4), round(modelo.llf, 2))
print(modelo.pred_table().astype(int))
Cómo funciona
np.exp(params)convierte un coeficiente en un odds ratio.predictdevuelve probabilidades, no clases.pred_tablees la matriz de confusión con umbral de 0.5.
Palabras clave y builtins usados aquí
asfloatintprintround
El intento, en números
- Líneas
- 15
- Caracteres a escribir
- 482
- Tokens
- 159
- Ritmo de tres estrellas
- 110 tpm
Al ritmo de tres estrellas de 110 tokens por minuto, este intento toma unos 87 segundos.
Paso 1 de 4 en Más allá de mínimos cuadrados; paso 9 de 19 en Estadística con statsmodels.