Cuantificar el ajuste de la regresión logística

Introducción a la regresión con statsmodels en Python

Maarten Van den Broeck

Content Developer at DataCamp

Los cuatro resultados

predicho: falso predicho: verdadero
real: falso correcto falso positivo
real: verdadero falso negativo correcto
Introducción a la regresión con statsmodels en Python

Matriz de confusión: recuento de resultados

actual_response = churn["has_churned"]
predicted_response = np.round(mdl_recency.predict())
outcomes = pd.DataFrame({"actual_response": actual_response,
                         "predicted_response": predicted_response})
print(outcomes.value_counts(sort=False))
actual_response  predicted_response
0                0.0                   141
                 1.0                    59
1                0.0                   111
                 1.0                    89
Introducción a la regresión con statsmodels en Python

Visualizar la matriz de confusión

conf_matrix = mdl_recency.pred_table()

print(conf_matrix)
[[141.              59.]
 [111.              89.]] 
verdadero negativo falso positivo
falso negativo verdadero positivo
from statsmodels.graphics.mosaicplot
import mosaic

mosaic(conf_matrix)

Un diagrama mosaico de los resultados del modelo de churn vs. recencia. Hay 200 observaciones tanto de churn verdadero como de no churn verdadero, así que cada columna tiene el mismo ancho.

Introducción a la regresión con statsmodels en Python

Exactitud

La exactitud es la proporción de predicciones correctas.

$$ \text{accuracy} = \frac{TN + TP}{TN + FN + FP + TP} $$

 [[141.,  59.],
  [111.,  89.]]
TN = conf_matrix[0,0]
TP = conf_matrix[1,1]
FN = conf_matrix[1,0]
FP = conf_matrix[0,1]
acc = (TN + TP) / (TN + TP + FN + FP)
print(acc)
0.575
Introducción a la regresión con statsmodels en Python

Sensibilidad

La sensibilidad es la proporción de verdaderos positivos.

$$ \text{sensitivity} = \frac{TP}{FN + TP} $$

 [[141.,  59.],
  [111.,  89.]]
TN = conf_matrix[0,0]
TP = conf_matrix[1,1]
FN = conf_matrix[1,0]
FP = conf_matrix[0,1]
sens = TP / (FN + TP)
print(sens)
0.445
Introducción a la regresión con statsmodels en Python

Especificidad

La especificidad es la proporción de verdaderos negativos.

$$ \text{specificity} = \frac{TN}{TN + FP} $$

 [[141.,  59.],
  [111.,  89.]]
TN = conf_matrix[0,0]
TP = conf_matrix[1,1]
FN = conf_matrix[1,0]
FP = conf_matrix[0,1]
spec = TN / (TN + FP)
print(spec)
0.705
Introducción a la regresión con statsmodels en Python

¡Vamos a practicar!

Introducción a la regresión con statsmodels en Python

Preparing Video For Download...