Как построить несколько кривых 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. set 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?

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

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