Как рассчитать auc (площадь под кривой) в python
Логистическая регрессия — это статистический метод, который мы используем для подбора модели регрессии, когда переменная ответа является двоичной.
Чтобы оценить, насколько хорошо модель логистической регрессии соответствует набору данных, мы можем взглянуть на следующие два показателя:
- Чувствительность: вероятность того, что модель предсказывает положительный результат наблюдения, когда результат на самом деле положительный. Это также называется «истинно положительным показателем».
- Специфичность: вероятность того, что модель предсказывает отрицательный результат наблюдения, хотя на самом деле результат отрицательный. Это также называют «истинно отрицательной ставкой».
Один из способов визуализировать эти два измерения — создать кривую ROC , которая означает кривую «рабочей характеристики приемника».
Это график, отображающий чувствительность по оси Y и (1 – специфичность) по оси X.
Одним из способов количественной оценки эффективности модели логистической регрессии при классификации данных является расчет AUC , что означает «площадь под кривой».
Чем ближе AUC к 1, тем лучше модель.
В следующем пошаговом примере показано, как рассчитать AUC для модели логистической регрессии в Python.
Шаг 1. Импортируйте пакеты
Сначала мы импортируем необходимые пакеты для выполнения логистической регрессии в Python:
import pandas as pd import numpy as np from sklearn. model_selection import train_test_split from sklearn. linear_model import LogisticRegression from sklearn import metrics
Шаг 2. Подберите модель логистической регрессии
Далее мы импортируем набор данных и подгоним к нему модель логистической регрессии:
#import dataset from CSV file on Github
url = "https://raw.githubusercontent.com/Statorials/Python-Guides/main/default.csv"
data = pd. read_csv (url)
#define the predictor variables and the response variable
X = data[[' student ',' balance ',' income ']]
y = data[' default ']
#split the dataset into training (70%) and testing (30%) sets
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size= 0.3 ,random_state= 0 )
#instantiate the model
log_regression = LogisticRegression()
#fit the model using the training data
log_regression. fit (X_train,y_train)
Шаг 3: Рассчитайте AUC
Мы можем использовать функцию metrics.roc_auc_score() для расчета AUC модели:
#use model to predict probability that given y value is 1
y_pred_proba = log_regression. predict_proba (X_test)[::, 1 ]
#calculate AUC of model
auc = metrics. roc_auc_score (y_test, y_pred_proba)
#print AUC score
print (auc)
0.5602104030579559
AUC (площадь под кривой) для этой конкретной модели составляет 0,5602 .
Напомним, что модель с показателем AUC 0,5 не лучше модели, которая делает случайные предположения.
Таким образом, в большинстве случаев модель с показателем AUC 0,5602 будет считаться плохой при классификации наблюдений в правильные классы.
Дополнительные ресурсы
В следующих руководствах представлена дополнительная информация о кривых ROC и показателях AUC:
Как интерпретировать кривую ROC (с примерами)
Что считается хорошим показателем AUC?