Оцінювання якості логістичної регресії

Вступ до Regression зі statsmodels у Python

Maarten Van den Broeck

Content Developer at DataCamp

Чотири можливі результати

predicted false predicted true
actual false correct false positive
actual true false negative correct
Вступ до Regression зі statsmodels у Python

Матриця помилок: підрахунок результатів

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
Вступ до Regression зі statsmodels у Python

Візуалізація матриці помилок

conf_matrix = mdl_recency.pred_table()

print(conf_matrix)
[[141.              59.]
 [111.              89.]] 
true negative false positive
false negative true positive
from statsmodels.graphics.mosaicplot
import mosaic

mosaic(conf_matrix)

Мозаїчний графік результатів моделі churn vs. recency. Є по 200 спостережень для справжніх відтоків і справжніх не-відтоків, тому стовпці однакової ширини.

Вступ до Regression зі statsmodels у Python

Accuracy

Accuracy — це частка правильних передбачень.

$$ \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
Вступ до Regression зі statsmodels у Python

Sensitivity

Sensitivity — це частка істинних спрацювань (true positives).

$$ \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
Вступ до Regression зі statsmodels у Python

Specificity

Specificity — це частка істинних негативів.

$$ \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
Вступ до Regression зі statsmodels у Python

Давайте потренуємось!

Вступ до Regression зі statsmodels у Python

Preparing Video For Download...