Tracer une courbe ROC en Python
- Définition de la courbe ROC en Python
- Bibliothèque Scikit-Learn en Python
- Code Python pour tracer la courbe ROC
- Explication du code
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 queRandom 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
etTest
) 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:
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 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