Як побудувати кілька кривих 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?

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *