Courbes ROC
Fait partie de la section Apprentissage supervisé du Journey Machine Learning de Coddy. Leçon 25 sur 58.
Chaque seuil donne son propre rappel et ses propres fausses alertes. La courbe ROC les montre toutes à la fois :
Horizontalement : le taux de faux positifs, la proportion de patients en bonne santé signalés. Verticalement : le rappel. Les seuils plus bas se rapprochent de (1, 1).
from sklearn.metrics import roc_curve, roc_auc_score
proba = model.predict_proba(X_test)[:, 1]
fpr, tpr, thresholds = roc_curve(y_test, proba) # tpr correspond au rappel
ax.plot(fpr, tpr)
print(f"{roc_auc_score(y_test, proba):.3f}")Cela affiche 0.914, l’AUC : l’aire sous la courbe. 1 est parfait, 0.5 équivaut à un pile ou face. Une courbe plus élevée détecte davantage de positifs pour le même nombre de fausses alertes.
Défi
MoyenUne exploitation de cerisiers allume des feux antigel les nuits où il risque de geler. Le code de départ entraîne deux modèles de gel, logistic et knn, et prépare le graphique.
- Écris
draw_roc(model, name): cette fonction trace la courbe ROC du modèle surax, avecnamecomme étiquette, et affiche son AUC comme ci-dessous. - Appelle-la pour les deux modèles, ajoute une diagonale en pointillés étiquetée
coin tosset une légende, puis affiche le graphique.
Pour les modèles de glissement de terrain :
logistic AUC: 0.869
k-NN AUC: 0.924Ensuite, Coddy décrit ton graphique. Celui de Coddy ressemble à ceci :
Essayez vous-même
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import roc_curve, roc_auc_score
# Une ligne par nuit de printemps dans une exploitation de cerisiers : 1 dans frost signifie que du gel s’est formé avant l’aube
nights = pd.read_csv("frost.csv")
features = ["temp_6pm_c", "humidity_pct", "wind_kmh", "cloud_pct"]
X_train, X_test, y_train, y_test = train_test_split(
nights[features], nights["frost"], test_size=0.25, random_state=0, stratify=nights["frost"])
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
# Deux modèles de prévision du gel
logistic = LogisticRegression(max_iter=1000)
logistic.fit(X_train, y_train)
knn = KNeighborsClassifier(n_neighbors=5)
knn.fit(X_train, y_train)
fig, ax = plt.subplots()
ax.set_title("Frost Warnings")
ax.set_xlabel("False positive rate")
ax.set_ylabel("Recall")
# Écrivez votre code ci-dessous
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Apprentissage supervisé
1Votre premier modèle
Apprendre à partir d’exemplesJeux d’entraînement et de testAjuster et prédireÉvaluer un modèleRécapitulatif : trieur de graines4Régression logistique
Prédictions oui ou nonLe seuil de décisionLes poids comme indicesPlusieurs classesRécapitulatif : filtre anti-spam2Plus proches voisins
Comment k-NN prend ses décisionsChoisir kFrontières de décisionMettre les voisins à l’échelleRécapitulatif : voisins et vin5Évaluer les classificateurs
La matrice de confusionPrécision et rappelLe score F1Classes déséquilibréesCourbes ROCRécapitulatif : test de dépistage8Validation croisée
Validation K-foldComparer les modèles équitablementRecherche par grilleRécapitulatif : réparations de skateboard11Projet : espèces de manchots
À la rencontre des manchotsPréparer les donnéesChoisir un modèleOptimiser le modèle gagnantDéployer le modèle3Régression linéaire
Prédire des nombresPlusieurs caractéristiquesMesurer les erreursGraphiques des résidusRécapitulatif : locations de vélos6Arbres de décision
Les arbres posent des questionsLire un arbreProfondeur de l’arbreImportance des caractéristiquesRécapitulatif : décisions de prêtEntraînez-vous par vous-même : Compilateur Python en ligne