Tracer une courbe ROC en Python

Lakshay Kapoor 30 janvier 2023
  1. Définition de la courbe ROC en Python
  2. Bibliothèque Scikit-Learn en Python
  3. Code Python pour tracer la courbe ROC
  4. Explication du code
Tracer une courbe ROC en Python

Dans ce guide, nous vous aiderons à en savoir plus sur cette fonction Python et la méthode que vous pouvez utiliser pour tracer une courbe ROC en tant que sortie du programme.

Définition de la courbe ROC en Python

Le terme courbe ROC signifie courbe caractéristique de fonctionnement du récepteur. Cette courbe est essentiellement une représentation graphique des performances de tout modèle de classification à tous les seuils de classification.

Il y a deux paramètres de cette courbe :

  • True Positive Rate (TPR) - Signifie réel, c’est-à-dire une vraie sensibilité
  • Taux de faux positifs (FPR) - Signifie pseudo, c’est-à-dire fausse sensibilité

Les deux paramètres sont appelés caractéristiques de fonctionnement et sont utilisés comme facteurs pour définir la courbe ROC.

En Python, l’efficacité du modèle est déterminée en observant l’aire sous la courbe (AUC). Ainsi, le modèle le plus efficace a une AUC égale à 1, et le modèle le moins efficace a une AUC égale à 0,5.

Bibliothèque Scikit-Learn en Python

La bibliothèque Scikit-learn est l’une des bibliothèques open source les plus importantes utilisées pour effectuer l’apprentissage automatique en Python. Cette bibliothèque comprend de nombreux outils pour des tâches telles que la classification, le clustering et la régression.

Dans ce tutoriel, plusieurs fonctions sont utilisées à partir de cette bibliothèque qui aideront à tracer la courbe ROC. Ces fonctions sont :

  • make_classification - Cette fonction est importée car elle permet de générer un problème de classification aléatoire à n classes en créant des clusters de points.
  • RandomForestClassifier - Cette fonction est importée en tant que Random Forest Classifier et est utilisée comme exemple de modèle dans ce tutoriel sur lequel la courbe ROC est réalisée.
  • train_test_split - Cette fonction est utilisée pour diviser l’ensemble des données en deux sous-ensembles (Train et Test) qui sont utilisés pour l’entraînement et le test des données.
  • roc_curve - Cette fonction permet de retourner la courbe ROC d’un modèle donné.

Code Python pour tracer la courbe ROC

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.datasets import make_classification
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import roc_curve


def plot_roc_curve(fper, tper):
    plt.plot(fper, tper, color="red", label="ROC")
    plt.plot([0, 1], [0, 1], color="green", linestyle="--")
    plt.xlabel("False Positive Rate")
    plt.ylabel("True Positive Rate")
    plt.title("Receiver Operating Characteristic Curve")
    plt.legend()
    plt.show()


data_X, cls_lab = make_classification(
    n_samples=2100, n_classes=2, weights=[1, 1], random_state=2
)
train_X, test_X, train_y, test_y = train_test_split(
    data_X, cls_lab, test_size=0.5, random_state=2
)

model = RandomForestClassifier()
model.fit(train_X, train_y)

prob = model.predict_proba(test_X)
prob = probs[:, 1]
fper, tper, thresholds = roc_curve(test_y, prob)
plot_roc_curve(fper, tper)

Production:

Courbe ROC en Python

Explication du code

Tout d’abord, toutes les bibliothèques et fonctions requises pour tracer une courbe ROC sont importées. Ensuite, une fonction appelée plot_roc_curve est définie dans laquelle tous les facteurs critiques de la courbe comme la couleur, les étiquettes et le titre sont mentionnés à l’aide de la bibliothèque Matplotlib. Après cela, la fonction make_classification est utilisée pour faire des échantillons aléatoires, puis ils sont divisés en ensembles train et test à l’aide de la fonction train_test_split. Ici, le ratio train-test des données est de 0.50. Ensuite, l’algorithme RandomForestClassifier est utilisé pour ajuster les données train_X et train_y. Enfin, la fonction roc_curve permet de tracer la courbe ROC.

Lakshay Kapoor avatar Lakshay Kapoor avatar

Lakshay Kapoor is a final year B.Tech Computer Science student at Amity University Noida. He is familiar with programming languages and their real-world applications (Python/R/C++). Deeply interested in the area of Data Sciences and Machine Learning.

LinkedIn