Menu
CoddyTech

Aprobación de crédito

Parte de la sección Aprendizaje supervisado del Journey de Machine Learning de Coddy. Lección 56 de 58.

Un banco cooperativo ofrece una tarjeta de tienda. En cards.csv, 79 de sus 320 titulares se retrasaron en los pagos durante su primer año:

Histogramas de densidad de la proporción de deuda de 241 titulares que se mantuvieron al día, en su mayoría entre 0.1 y 0.35, y de 79 que se retrasaron, desplazados hacia la derecha, hacia valores de 0.3 a 0.8, con una amplia superposición

La deuda ayuda, pero los grupos se solapan. El banco puntuará el riesgo de cada solicitante y enviará a revisión por parte de una persona a quienes superen un umbral.

Su regla: captar una proporción determinada de los futuros pagadores morosos. Elige el umbral usando las filas de validación y luego evalúalo una sola vez con las filas de prueba.

challenge icon

Desafío

Difícil

El programa lee la exhaustividad que quiere el banco, target. El código inicial enumera las columnas y los thresholds, de mayor a menor.

  1. Separa un cuarto estratificado para pruebas y, después, un cuarto estratificado de lo que queda para validación; en ambos casos, random_state=0.
  2. Entrena una canalización con las filas de entrenamiento restantes: rellena los valores numéricos con la mediana y los escala, codifica home con one-hot y aplica regresión logística.
  3. En el conjunto de validación, toma el primer umbral cuya exhaustividad alcanza target.
  4. Imprímelo y, después, indica cómo les va a las filas de prueba con ese umbral, como se muestra abajo (3 decimales).

Para otro banco y 0.7:

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

Pruébalo tú mismo

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]

# Escribe tu código a continuación
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Aprendizaje supervisado

Practica por tu cuenta: Compilador de Python online