Heim  >  Artikel  >  Backend-Entwicklung  >  Python zeichnet eine ROC-Kurve und berechnet den AUC-Wert (mit Code)

Python zeichnet eine ROC-Kurve und berechnet den AUC-Wert (mit Code)

烟雨青岚
烟雨青岚nach vorne
2020-06-19 13:01:546916Durchsuche

Python zeichnet eine ROC-Kurve und berechnet den AUC-Wert (mit Code)

Vorwort

ROC-Kurve (Receiver Operating Characteristic). und AUC werden häufig verwendet, um die Qualität eines binären Klassifikators zu bewerten. In diesem Artikel werden ROC und AUC zunächst kurz vorgestellt und anschließend anhand von Beispielen gezeigt, wie ROC-Kurven erstellt und AUC in Python berechnet werden.

AUC-Einführung

AUC (Area Under Curve) ist derzeit ein sehr häufig verwendeter Bewertungsindikator in binären Klassifizierungsmodellen für maschinelles Lernen Gängige Bibliotheken für maschinelles Lernen (z. B. scikit-learn) integrieren im Allgemeinen die Berechnung dieses Indikators, aber manchmal ist das Modell separat oder von Ihnen selbst geschrieben. Wenn Sie in diesem Fall die Qualität des Trainingsmodells bewerten möchten, müssen Sie dies tun Bei der Suche nach Informationen habe ich festgestellt, dass libsvm-tools über eine sehr einfach zu verstehende AUC-Berechnung verfügt.

AUC-Berechnung

Die Berechnung der AUC gliedert sich in die folgenden drei Schritte:

1. Vorbereitung der Berechnungsdaten, die im Allgemeinen verwendet werden, wenn nur solche vorhanden sind Beim Training des Modells wird ein Trainingssatz berechnet. Wenn ein Bewertungssatz (Auswertung) vorhanden ist, kann dieser normalerweise direkt berechnet werden. Das Format der Daten erfordert im Allgemeinen die vorhergesagte Punktzahl und ihre Zielkategorie die Zielkategorie, nicht die vorhergesagte Kategorie)
2. Gemäß der Schwellenwertteilung werden die horizontalen (X: Falsch-Positiv-Rate) und vertikalen (Y: Richtig-Positiv-Rate) Punkte erhalten
3. Nach dem Verbinden der Koordinaten Punkte in eine Kurve, berechnen Sie die Fläche unter der Kurve, die der Wert von AUC ist

Gehen Sie direkt zum Python-Code

#! -*- 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 = 0for 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

Das Format ist:

nonclk \t clk \t score

Unter ihnen:
1. Nonclick: nicht angeklickte Daten, die als Anzahl der negativen Proben angesehen werden können
2, clk: die Anzahl der Klicks, die als Anzahl der positiven Proben angesehen werden können
3 . Punktzahl: Die Verwendung dieser Punktzahl als Gruppe zur Durchführung von Vorstatistiken für positive und negative Proben kann den Umfang der AUC-Berechnung reduzieren.
Das Ergebnis der Operation ist:

Python zeichnet eine ROC-Kurve und berechnet den AUC-Wert (mit Code)

Wenn pylab nicht auf Ihrem Computer installiert ist, können Sie die Abhängigkeiten und Zeichnungsteile direkt mit Anmerkungen versehen
Achten Sie auf den oben veröffentlichten Code: 1. Nur die Ergebnisse der beiden Kategorien können berechnet werden (was die Bezeichnungen der beiden Kategorien angeht, können Sie sie beiläufig behandeln)
2. Jede Punktzahl im obigen Code hat einen Schwellenwert. Tatsächlich ist diese Effizienz ziemlich niedrig. Sie können die Stichprobe oder Berechnung durchführen gleiche Teile bei der Berechnung der horizontalen Achsenkoordinaten
Vielen Dank fürs Lesen
Als ich anfing zu arbeiten, habe ich festgestellt, dass ich dort unter einer schlechten Computergrundlage litt Wenn ich keine guten akademischen Qualifikationen habe, kann ich das nicht übermorgen nachholen, also habe ich meinen eigenen Gegenangriff außerhalb des Programmierens gestartet und mir die Grundkenntnisse von Python angeeignet Nachdem ich es ausführlich geklärt habe, habe ich es auf unserem öffentlichen WeChat-Konto „Programmer Academy“ gepostet. Wenn Sie nicht bereit sind, mittelmäßig zu sein, dann schließen Sie sich mir an und wachsen Sie außerhalb des Programmierens weiter!

Tatsächlich gibt es hier nicht nur Technologien, sondern auch andere Dinge als Technologie. Zum Beispiel, wie man ein exquisiter Programmierer statt eines „Diaos“ ist Es? ? [Zum Mitmachen klicken] Wenn du du selbst sein und eine edle Person werden willst, dann komm vorbei!

Vielen Dank an alle fürs Lesen, ich hoffe, dass Sie viel davon profitieren werden.

Dieser Artikel wurde reproduziert von: https://blog.csdn.net/adrrry/article/details/106796288

Empfohlenes Tutorial: „

Python-Tutorial

Das obige ist der detaillierte Inhalt vonPython zeichnet eine ROC-Kurve und berechnet den AUC-Wert (mit Code). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen