Python dessine la courbe ROC et calcule la valeur AUC
Avant-propos
La courbe ROC (Receiver Operating Characteristic) et l'AUC sont souvent utilisées pour évaluer la qualité d'un classificateur binaire. Cet article présentera d'abord brièvement le ROC et l'AUC, puis utilisera des exemples pour démontrer comment créer des courbes ROC et calculer l'AUC en python.
Introduction à l'AUC
AUC (Area Under Curve) est un indice d'évaluation très couramment utilisé dans les modèles de classification binaire d'apprentissage automatique comparés. Étant donné que F1-Score a une plus grande tolérance aux déséquilibres des projets, les bibliothèques d'apprentissage automatique actuellement courantes (telles que scikit-learn) intègrent généralement le calcul de cet indicateur, mais parfois les modèles sont séparés ou écrits par eux-mêmes, à l'heure actuelle, si vous le souhaitez. Si vous souhaitez évaluer la qualité du modèle de formation, vous devez créer vous-même un module de calcul de l'AUC. Lors de la recherche d'informations, cet article a révélé que libsvm-tools dispose d'un calcul de l'AUC très facile à comprendre, je l'ai donc choisi pour l'avenir. utiliser.
Calcul de l'AUC
Le calcul de l'AUC est divisé en trois étapes suivantes :
1. Préparation des données de calcul. S'il n'y a qu'un ensemble de formation lors de la formation du modèle, la validation croisée est généralement utilisée pour le calculer. S'il existe un ensemble d'évaluation (évaluer), il peut généralement être calculé directement. nécessite généralement le score de prédiction et sa catégorie cible (remarque : il s'agit de la catégorie cible, pas de la catégorie prédite)
2. Obtenez l'horizontale (X : taux de faux positifs) et la verticale (Y : vrais positifs Rate) points selon la division seuil
3, après avoir connecté les points de coordonnées dans une courbe, calculez l'aire sous la courbe, qui est la valeur de l'AUC
Entrez directement le code python
#! -*- coding=utf-8 -*- import pylab as pl from math import log,exp,sqrt evaluate_result="you file path" db = [] #[score,nonclk,clk] pos, neg = 0, 0 with open(evaluate_result,'r') as fs: for line in fs: nonclk,clk,score = line.strip().split('\t') nonclk = int(nonclk) clk = int(clk) score = float(score) db.append([score,nonclk,clk]) pos += clk neg += nonclk db = sorted(db, key=lambda x:x[0], reverse=True) #计算ROC坐标点 xy_arr = [] tp, fp = 0., 0. for i in range(len(db)): tp += db[i][2] fp += db[i][1] xy_arr.append([fp/neg,tp/pos]) #计算曲线下面积 auc = 0. prev_x = 0 for x,y in xy_arr: if x != prev_x: auc += (x - prev_x) * y prev_x = x print "the auc is %s."%auc x = [_v[0] for _v in xy_arr] y = [_v[1] for _v in xy_arr] pl.title("ROC curve of %s (AUC = %.4f)" % ('svm',auc)) pl.xlabel("False Positive Rate") pl.ylabel("True Positive Rate") pl.plot(x, y)# use pylab to plot x and y pl.show()# show the plot on the screen
L'ensemble de données d'entrée peut faire référence au résultat de la prédiction svm
Le format est :
nonclk \t clk \t score
Parmi eux :
1. nonclick : données non cliquées, qui peuvent être considérées comme le nombre d'échantillons négatifs
2 , clk : le nombre de clics, qui peuvent être considérées comme le nombre d'échantillons positifs
3. score : score prédit, utiliser ce score en tant que groupe pour effectuer des pré-statistiques d'échantillons positifs et négatifs peut réduire la quantité de calcul de l'AUC
Le résultat de l'opération est :
Si pylab n'est pas installé sur la machine, vous pouvez directement annoter les dépendances et la partie dessin
Remarque
Le code posté ci-dessus :
1. Seuls les résultats de deux catégories peuvent être calculés (comme pour les deux catégories Les tags peuvent être traités à votre guise )
2. Chaque score dans le code ci-dessus est seuillé. En fait, cette efficacité est assez faible. L'échantillon peut être échantillonné ou divisé en parties égales lors du calcul des coordonnées de l'axe horizontal. >
Pour plus d'articles sur le dessin de la courbe ROC par Python et le calcul de la valeur AUC, veuillez faire attention au site Web PHP chinois !
Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Solution aux problèmes d'autorisation Lors de la visualisation de la version Python dans Linux Terminal Lorsque vous essayez d'afficher la version Python dans Linux Terminal, entrez Python ...

Comment enseigner les bases de la programmation novice en informatique dans les 10 heures? Si vous n'avez que 10 heures pour enseigner à l'informatique novice des connaissances en programmation, que choisissez-vous d'enseigner ...

Lorsque vous utilisez la bibliothèque Pandas de Python, comment copier des colonnes entières entre deux frames de données avec différentes structures est un problème courant. Supposons que nous ayons deux dats ...

Comment éviter d'être détecté lors de l'utilisation de FiddlereVerywhere pour les lectures d'homme dans le milieu lorsque vous utilisez FiddlereVerywhere ...

Les expressions régulières sont des outils puissants pour la correspondance des motifs et la manipulation du texte dans la programmation, améliorant l'efficacité du traitement de texte sur diverses applications.

Comment Uvicorn écoute-t-il en permanence les demandes HTTP? Uvicorn est un serveur Web léger basé sur ASGI. L'une de ses fonctions principales est d'écouter les demandes HTTP et de procéder ...

Dans Python, comment créer dynamiquement un objet via une chaîne et appeler ses méthodes? Il s'agit d'une exigence de programmation courante, surtout si elle doit être configurée ou exécutée ...

L'article traite des bibliothèques Python populaires comme Numpy, Pandas, Matplotlib, Scikit-Learn, Tensorflow, Django, Flask et Demandes, détaillant leurs utilisations dans le calcul scientifique, l'analyse des données, la visualisation, l'apprentissage automatique, le développement Web et H et H
