Maison  >  Article  >  développement back-end  >  Conseils sur la courbe ROC en Python

Conseils sur la courbe ROC en Python

WBOY
WBOYoriginal
2023-06-11 12:12:271946parcourir

Ces dernières années, le développement de la science des données et du machine learning a fait du langage de programmation Python l'un des langages préférés des data scientists et des ingénieurs en machine learning. Python fournit un grand nombre de bibliothèques et de frameworks, tels que NumPy, Pandas, Scikit-learn, etc., facilitant la création de modèles d'apprentissage automatique de haute qualité.

La courbe ROC (Receiver Operating Characteristic Curve) est un outil important dans l'apprentissage automatique. Elle est utilisée pour évaluer les performances des algorithmes de classification et nous aider à comprendre la capacité de classification et la robustesse de l'algorithme. En Python, nous pouvons tracer les courbes ROC de différentes manières pour aider à évaluer les algorithmes de classification. Cet article présentera les techniques de dessin de courbe ROC en Python et démontrera comment utiliser la bibliothèque Scikit-learn et la bibliothèque Matplotlib pour créer une belle courbe ROC.

Comment fonctionne la courbe ROC ?

La courbe ROC est l'un des outils les plus couramment utilisés dans l'évaluation des performances des classificateurs binaires. Cette courbe illustre les performances du classificateur en traçant la relation entre le taux de faux positifs et le taux de vrais positifs. Le taux de faux positifs est la proportion de classes de faux positifs par rapport à toutes les classes négatives, et le taux de vrais positifs est le rapport entre les classes de vrais positifs et toutes les classes positives. L’axe X de la courbe ROC représente le taux de faux positifs, tandis que l’axe Y représente le taux de vrais positifs.

Habituellement, le problème de classification implique un problème de jugement binaire, dans lequel les exemples positifs et négatifs sont appelés respectivement "1" et "0". Le classificateur peut classer l'instance selon un certain seuil positif ou. exemples négatifs. Si le seuil du classificateur est trop élevé, un grand nombre d’instances seront classées par erreur comme exemples négatifs. Cela augmente le taux de faux négatifs et peut amener le classificateur à manquer des instances. Au contraire, si le seuil du classificateur est trop bas, un grand nombre d’instances seront classées comme exemples positifs, augmentera le taux de faux positifs et pourra conduire à des erreurs d’appréciation. Pour implémenter un classificateur optimal, nous devons peser ces deux types d'erreurs.

Une courbe ROC idéale part du point où le taux de vrais positifs est égal à 1 et le taux de faux positifs est égal à 0. À ce stade, le seuil est fixé à la valeur maximale. Lorsque l’on augmente le seuil, le taux de vrais positifs reste le même, mais le taux de faux positifs augmente. Par conséquent, à tout moment de la courbe ROC, un taux de vrais positifs plus élevé et un faible taux de faux positifs sont considérés comme de meilleures performances qu’un taux de faux positifs plus élevé.

Astuces de courbe ROC

Il existe plusieurs techniques pour dessiner des courbes ROC en Python. Voici quelques techniques courantes :

  1. Utilisation de la bibliothèque Scikit-learn

Scikit-learn fournit des fonctions pratiques pour calculer et définir différents seuils. Sortie de vrais et faux positifs, et renvoie les résultats du taux de faux positifs et du taux de vrais positifs. Une fois que nous avons ces sorties, nous pouvons les visualiser sous forme de courbes ROC. Voici un exemple de calcul et de tracé d'une courbe ROC à l'aide de la bibliothèque Scikit-learn :

from sklearn.metrics import roc_curve
from sklearn.metrics import auc

fpr, tpr, thresholds = roc_curve(y_test, y_pred_prob)
roc_auc = auc(fpr, tpr)

plt.figure()
plt.plot(fpr, tpr, color='darkorange', lw=2, label='ROC curve (area = %0.2f)' % roc_auc)
plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--')
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.05])
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('Receiver Operating Characteristic (ROC) Curve')
plt.legend(loc="lower right")
plt.show()

Dans cet exemple, nous supposons que nous avons ajusté un classificateur binaire et calculé la probabilité à l'aide de l'ensemble de test. y_test est l'étiquette de classification des données de test et y_pred_prob est la probabilité prédite par le classificateur. Cet exemple calcule fpr et tpr et utilise la fonction auc dans Scikit-learn pour calculer l'aire sous la courbe ROC. Nous pouvons utiliser Matplotlib pour dessiner la courbe ROC. Le graphique représente le taux de vrais positifs sur l’axe Y et le taux de faux positifs sur l’axe X.

  1. Tracé personnalisé à l'aide de la bibliothèque Matplotlib

Si vous souhaitez personnaliser davantage l'apparence de la courbe ROC, vous pouvez utiliser Matplotlib pour la créer Votre propre diagramme. Voici un exemple montrant comment utiliser Matplotlib pour tracer une courbe ROC :

import numpy as np
import matplotlib.pyplot as plt

# Generate some data
N      = 50
x_true = np.random.randn(N)
x_false= np.random.randn(N)

# Add some noise
x_true = x_true + np.random.randn(N) * 0.3
x_false= x_false + np.random.randn(N) * 0.3

# Create labels and predictions
y_true = np.ones(N)
y_false= np.zeros(N)
y_pred = np.concatenate([x_true, x_false])
y_true = np.concatenate([y_true, y_false])

# Determine threshold for each point
thresholds = np.sort(y_pred)
tpr_all    = []
fpr_all    = []
for threshold in thresholds:
    y_pred_bin = (y_pred >= threshold).astype(int)
    tn, fp, fn, tp = confusion_matrix(y_true, y_pred_bin).ravel()
    tpr = tp / (tp + fn)
    fpr = fp / (fp + tn)
    tpr_all.append(tpr)
    fpr_all.append(fpr)    

plt.figure()
plt.plot(fpr_all, tpr_all)
plt.plot([0, 1], [0, 1], '--', color='grey')
plt.xlabel("False Positive Rate")
plt.ylabel("True Positive Rate")
plt.title("ROC Curve")
plt.show()

Dans cet exemple, nous avons d'abord généré des données simulées, puis les avons rendues plus réalistes en ajoutant du bruit. Ensuite, nous avons créé des étiquettes et des prédictions sur les données combinées et calculé les taux et seuils de vrais et faux positifs pour chaque point. Nous utilisons enfin Matplotlib pour tracer la courbe ROC. Cet exemple illustre comment dessiner une courbe ROC à l'aide de la programmation Python et montre également comment dessiner un graphique personnalisé.

Conclusion

La courbe ROC est un outil important pour évaluer les performances d'un classificateur. En Python, les courbes ROC peuvent être dessinées à l'aide des bibliothèques Scikit-learn et Matplotlib. Scikit-learn fournit des fonctions pratiques pour calculer les courbes ROC, tandis que Matplotlib fournit des outils de dessin hautement personnalisables. Les exemples présentés illustrent deux techniques de tracé de courbes ROC. Que vous envisagiez d'utiliser des fonctions de bibliothèque ou des tracés personnalisés, ces techniques peuvent être utiles pour évaluer les performances d'un classificateur sur des données réelles.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn