Как нарисовать кривую roc в python (шаг за шагом)


Логистическая регрессия — это статистический метод, который мы используем для подбора модели регрессии, когда переменная ответа является двоичной. Чтобы оценить, насколько хорошо модель логистической регрессии соответствует набору данных, мы можем взглянуть на следующие два показателя:

  • Чувствительность: вероятность того, что модель предсказывает положительный результат наблюдения, когда результат на самом деле положительный. Это также называется «истинно положительным показателем».
  • Специфичность: вероятность того, что модель предсказывает отрицательный результат наблюдения, хотя на самом деле результат отрицательный. Это также называют «истинно отрицательной ставкой».

Один из способов визуализировать эти два измерения — создать кривую ROC , которая означает кривую «рабочей характеристики приемника». Это график, показывающий чувствительность и специфичность модели логистической регрессии.

В следующем пошаговом примере показано, как создать и интерпретировать кривую ROC в 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
import matplotlib. pyplot as plt

Шаг 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: Нарисуйте кривую ROC

Далее мы рассчитаем долю истинных положительных результатов и долю ложных положительных результатов и создадим кривую ROC, используя пакет визуализации данных Matplotlib:

 #define metrics
y_pred_proba = log_regression. predict_proba (X_test)[::,1]
fpr, tpr, _ = metrics. roc_curve (y_test, y_pred_proba)

#create ROC curve
plt. plot (fpr,tpr)
plt. ylabel (' True Positive Rate ')
plt. xlabel (' False Positive Rate ')
plt. show () 

Чем ближе кривая подходит к верхнему левому углу графика, тем лучше модель способна классифицировать данные по категориям.

Как видно из графика выше, эта модель логистической регрессии довольно плохо справляется с сортировкой данных по категориям.

Чтобы количественно оценить это, мы можем рассчитать AUC — площадь под кривой — которая говорит нам, какая часть графика находится под кривой.

Чем ближе AUC к 1, тем лучше модель. Модель с AUC, равной 0,5, не лучше модели, выполняющей случайную классификацию.

Шаг 4: Рассчитайте AUC

Мы можем использовать следующий код для расчета AUC модели и отображения его в правом нижнем углу графика ROC:

 #define metrics
y_pred_proba = log_regression. predict_proba (X_test)[::,1]
fpr, tpr, _ = metrics. roc_curve (y_test, y_pred_proba)
auc = metrics. roc_auc_score (y_test, y_pred_proba)

#create ROC curve
plt. plot (fpr,tpr,label=" AUC= "+str(auc))
plt. ylabel (' True Positive Rate ')
plt. xlabel (' False Positive Rate ')
plt. legend (loc=4)
plt. show () 

AUC этой модели логистической регрессии оказывается равным 0,5602 . Поскольку эта цифра близка к 0,5, это подтверждает, что модель плохо классифицирует данные.

Связанный: Как построить несколько кривых ROC в Python

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *