Как построить несколько кривых ROC в Python (с примером)

Как построить несколько кривых ROC в Python (с примером)

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

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

В следующем пошаговом примере показано, как построить несколько кривых ROC в Python.

Шаг 1: Импортируйте необходимые пакеты

Во-первых, мы импортируем несколько необходимых пакетов в Python:

from sklearn import metrics
from sklearn import datasets
from sklearn. model_selection import train_test_split
from sklearn. linear_model import LogisticRegression
from sklearn. ensemble import GradientBoostingClassifier
import numpy as np
import matplotlib.pyplot as plt

Шаг 2: Создайте поддельные данные

Далее мы будем использовать функцию make_classification() из sklearn для создания поддельного набора данных с 1000 строками, четырьмя переменными-предикторами и одной переменной бинарного ответа:

#create fake dataset
X, y = datasets. make_classification (n_samples= 1000 ,
 n_features= 4 ,
 n_informative= 3 ,
 n_redundant= 1 ,
 random_state= 0 )

#split dataset into training and testing set
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size= .3 ,random_state= 0 )

Шаг 3. Подгонка нескольких моделей и построение кривых ROC

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

#set up plotting area
plt.figure(0).clf ()

#fit logistic regression model and plot ROC curve
model = LogisticRegression()
model. fit (X_train, y_train)
y_pred = model. predict_proba (X_test)[:, 1]
fpr, tpr, _ = metrics. roc_curve (y_test, y_pred)
auc = round(metrics. roc_auc_score (y_test, y_pred), 4)
plt.plot (fpr,tpr,label="Logistic Regression, AUC="+str(auc))

#fit gradient boosted model and plot ROC curve
model = GradientBoostingClassifier()
model. fit (X_train, y_train)
y_pred = model. predict_proba (X_test)[:, 1]
fpr, tpr, _ = metrics. roc_curve (y_test, y_pred)
auc = round(metrics. roc_auc_score (y_test, y_pred), 4)
plt.plot (fpr,tpr,label="Gradient Boosting, AUC="+str(auc))

#add legend
plt.legend() 
построить несколько кривых ROC в Python

Синяя линия показывает кривую ROC для модели логистической регрессии, а оранжевая линия показывает кривую ROC для модели с градиентным усилением.

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

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

Чем ближе AUC к 1, тем лучше модель.

На нашем графике мы видим следующие показатели AUC для каждой модели:

  • AUC модели логистической регрессии: 0,7902
  • AUC модели с градиентным усилением: 0,9712

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

Дополнительные ресурсы

В следующих руководствах представлена дополнительная информация о моделях классификации и кривых ROC:

Введение в логистическую регрессию
Как интерпретировать кривую ROC (с примерами)
Что считается хорошей оценкой AUC?

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.