Zeichnen Sie eine ROC-Kurve in Python

Lakshay Kapoor 15 Februar 2024
  1. ROC-Kurvendefinition in Python
  2. Scikit-Learn-Bibliothek in Python
  3. Python-Code zum Zeichnen der ROC-Kurve
  4. Code-Erklärung
Zeichnen Sie eine ROC-Kurve in Python

In diesem Handbuch erfahren Sie mehr über diese Python-Funktion und die Methode, mit der Sie eine ROC-Kurve als Programmausgabe zeichnen können.

ROC-Kurvendefinition in Python

Der Begriff ROC-Kurve steht für Receiver Operating Characteristic Curve. Diese Kurve ist im Grunde eine grafische Darstellung der Leistung eines beliebigen Klassifizierungsmodells bei allen Klassifizierungsschwellen.

Es gibt zwei Parameter dieser Kurve:

  • True Positive Rate (TPR) - Steht für echte, d.h. wahre Sensitivität
  • False Positive Rate (FPR) - Steht für Pseudo, d.h. falsche Sensitivität

Beide Parameter sind als Betriebseigenschaften bekannt und werden als Faktoren zur Definition der ROC-Kurve verwendet.

In Python wird die Effizienz des Modells bestimmt, indem die Fläche unter der Kurve (AUC) angezeigt wird. Somit hat das effizienteste Modell die AUC gleich 1, und das am wenigsten effiziente Modell hat die AUC gleich 0,5.

Scikit-Learn-Bibliothek in Python

Die Bibliothek Scikit-learn ist eine der wichtigsten Open-Source-Bibliotheken, die verwendet wird, um maschinelles Lernen in Python durchzuführen. Diese Bibliothek besteht aus vielen Tools für Aufgaben wie Klassifizierung, Clustering und Regression.

In diesem Tutorial werden verschiedene Funktionen aus dieser Bibliothek verwendet, die beim Zeichnen der ROC-Kurve helfen. Diese Funktionen sind:

  • make_classification - Diese Funktion wird importiert, weil sie bei der Generierung eines zufälligen n-Klassen-Klassifikationsproblems durch das Erstellen von Punktclustern hilft.
  • RandomForestClassifier - Diese Funktion wird als Random Forest Classifier importiert und wird in diesem Tutorial als Beispielmodell verwendet, auf dem die ROC-Kurve erstellt wird.
  • train_test_split - Diese Funktion wird verwendet, um die gesamten Daten in zwei Teilmengen (Train und Test) aufzuteilen, die zum Trainieren und Testen der Daten verwendet werden.
  • roc_curve - Diese Funktion wird verwendet, um die ROC-Kurve eines bestimmten Modells zurückzugeben.

Python-Code zum Zeichnen der ROC-Kurve

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)

Ausgabe:

ROC-Kurve in Python

Code-Erklärung

Zunächst werden alle Bibliotheken und Funktionen importiert, die zum Plotten einer ROC-Kurve erforderlich sind. Dann wird eine Funktion namens plot_roc_curve definiert, in der alle kritischen Faktoren der Kurve wie Farbe, Beschriftung und Titel mit der Bibliothek Matplotlib erwähnt werden. Danach werden mit der Funktion make_classification Stichproben erstellt, die dann mit Hilfe der Funktion train_test_split in train- und test-Sets aufgeteilt werden. Hier beträgt das train-test-Verhältnis der Daten 0.50. Dann wird der RandomForestClassifier-Algorithmus verwendet, um die train_X- und train_y-Daten anzupassen. Schließlich wird die Funktion roc_curve verwendet, um die ROC-Kurve zu zeichnen.

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