Approbation de crédit
Fait partie de la section Apprentissage supervisé du Journey Machine Learning de Coddy. Leçon 56 sur 58.
Une banque coopérative gère une carte de magasin. Dans cards.csv, 79 de ses 320 titulaires ont pris du retard dans leurs paiements au cours de leur première année :
L’endettement est utile, mais les groupes se chevauchent. La banque évaluera le risque de chaque demandeur et transmettra à une personne, pour examen, toute personne dont le risque dépasse un seuil.
Sa règle : détecter une proportion déterminée des futurs retards de paiement. Choisissez le seuil sur les lignes de validation, puis évaluez-le une seule fois sur les lignes de test.
Défi
DifficileLe programme lit le rappel souhaité par la banque, target. Le code de départ liste les colonnes et les thresholds, de la plus élevée à la plus basse.
- Mettez de côté un quart stratifié pour le test, puis un quart stratifié de ce qui reste pour la validation, avec
random_state=0dans les deux cas. - Entraînez un pipeline sur les lignes d’entraînement restantes : remplacez les valeurs manquantes par la médiane et standardisez les valeurs numériques, encodez
homeen one-hot, puis effectuez une régression logistique. - Sur l’ensemble de validation, prenez le premier seuil dont le rappel atteint
target. - Affichez-le, puis indiquez les résultats obtenus par les lignes de test avec ce seuil, comme ci-dessous (3 décimales).
Pour une autre banque et 0.7 :
Threshold: 0.3 (validation recall 0.733)
Test: caught 15 of 21 late payers, 12 false alarms
Precision: 0.556Essayez vous-même
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.compose import ColumnTransformer
from sklearn.pipeline import make_pipeline
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import StandardScaler, OneHotEncoder
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import recall_score, precision_score, confusion_matrix
cards = pd.read_csv("cards.csv")
numbers = ["age", "income_k", "debt_ratio", "years_at_job", "late_payments", "card_limit_k"]
text = ["home"]
X = cards[numbers + text]
y = cards["fell_behind"]
target = float(input())
thresholds = [0.5, 0.45, 0.4, 0.35, 0.3, 0.25, 0.2, 0.15, 0.1]
# É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