Traccia una curva ROC in Python
- Definizione della curva ROC in Python
- Libreria Scikit-Learn in Python
- Codice Python per tracciare la curva ROC
- Codice Spiegazione Code
In questa guida, ti aiuteremo a conoscere meglio questa funzione Python e il metodo che puoi utilizzare per tracciare una curva ROC come output del programma.
Definizione della curva ROC in Python
Il termine curva ROC sta per curva caratteristica operativa del ricevitore. Questa curva è fondamentalmente una rappresentazione grafica delle prestazioni di qualsiasi modello di classificazione a tutte le soglie di classificazione.
Ci sono due parametri di questa curva:
- True Positive Rate (TPR) - Sta per reale, cioè vera sensibilità
- Tasso di falsi positivi (FPR) - Sta per pseudo, cioè falsa sensibilità
Entrambi i parametri sono noti come caratteristiche operative e vengono utilizzati come fattori per definire la curva ROC.
In Python, l’efficienza del modello è determinata osservando l’area sotto la curva (AUC). Pertanto, il modello più efficiente ha l’AUC pari a 1 e il modello meno efficiente ha l’AUC pari a 0,5.
Libreria Scikit-Learn in Python
La libreria Scikit-learn
è una delle più importanti librerie open source utilizzate per eseguire l’apprendimento automatico in Python. Questa libreria è composta da molti strumenti per attività come classificazione, clustering e regressione.
In questo tutorial, vengono utilizzate diverse funzioni di questa libreria che aiuteranno a tracciare la curva ROC. Queste funzioni sono:
make_classification
- Questa funzione viene importata perché aiuta a generare un problema di classificazione casuale di n classi creando cluster di punti.RandomForestClassifier
- Questa funzione viene importata comeRandom Forest Classifier
e viene utilizzata come modello di esempio in questo tutorial su cui viene realizzata la curva ROC.train_test_split
- Questa funzione viene utilizzata per dividere l’intero dato in due sottoinsiemi (Train
eTest
) che vengono utilizzati per l’addestramento e il test dei dati.roc_curve
- Questa funzione viene utilizzata per restituire la curva ROC di un dato modello.
Codice Python per tracciare la curva 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)
Produzione:
Codice Spiegazione Code
Innanzitutto, vengono importate tutte le librerie e le funzioni necessarie per tracciare una curva ROC. Quindi viene definita una funzione chiamata plot_roc_curve
in cui tutti i fattori critici della curva come il colore, le etichette e il titolo sono menzionati utilizzando la libreria Matplotlib
. Successivamente, la funzione make_classification
viene utilizzata per creare campioni casuali, quindi vengono divisi in set train
e test
con l’aiuto della funzione train_test_split
. Qui, il rapporto train-test
dei dati è 0.50
. Quindi viene utilizzato l’algoritmo RandomForestClassifier
per adattare i dati train_X
e train_y
. Infine, la funzione roc_curve
viene utilizzata per tracciare la curva 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