Menu
CoddyTech

Approvazione del credito

Fa parte della sezione Apprendimento supervisionato del percorso Machine Learning di Coddy. Lezione 56 di 58.

Una banca cooperativa gestisce una carta fedeltà. In cards.csv, 79 dei suoi 320 titolari sono rimasti indietro con i pagamenti nel primo anno:

Istogrammi di densità del rapporto debito per 241 titolari in regola con i pagamenti, per lo più tra 0.1 e 0.35, e 79 rimasti indietro, spostati verso destra tra 0.3 e 0.8, con un'ampia sovrapposizione

Il debito aiuta, ma i gruppi si sovrappongono. La banca valuterà il rischio di ogni richiedente e invierà a una persona per la revisione chiunque superi una soglia.

La sua regola: individuare una quota stabilita di futuri pagatori in ritardo. Scegli la soglia sulle righe di validazione, poi valutala una sola volta sulle righe di test.

challenge icon

Sfida

Difficile

Il programma legge il richiamo richiesto dalla banca, target. Il codice iniziale elenca le colonne e le thresholds, dalla più alta alla più bassa.

  1. Riserva un quarto stratificato per il test, poi un quarto stratificato di ciò che rimane per la convalida; per entrambi usa random_state=0.
  2. Addestra una pipeline sulle righe di addestramento rimaste: sostituzione dei valori mancanti con la mediana e ridimensionamento dei numeri, codifica one-hot di home, regressione logistica.
  3. Sui dati di convalida, scegli la prima soglia il cui richiamo raggiunge target.
  4. Stampala, poi indica come si comportano le righe di test con quella soglia, come sotto (3 decimali).

Per un'altra banca e 0.7:

Threshold: 0.3 (validation recall 0.733)
Test: caught 15 of 21 late payers, 12 false alarms
Precision: 0.556

Provalo tu

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]

# Scrivi il tuo codice qui sotto
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Apprendimento supervisionato

Esercitati da solo: Compilatore Python online