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:
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.
Desafío
DifícilEl programa lee la exhaustividad que quiere el banco, target. El código inicial enumera las columnas y los thresholds, de mayor a menor.
- 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. - Entrena una canalización con las filas de entrenamiento restantes: rellena los valores numéricos con la mediana y los escala, codifica
homecon one-hot y aplica regresión logística. - En el conjunto de validación, toma el primer umbral cuya exhaustividad alcanza
target. - 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.556Prué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
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Aprendizaje supervisado
1Tu primer modelo
Aprender de ejemplosConjuntos de entrenamiento y pruebaAjustar y predecirEvaluar un modeloRepaso: clasificador de semillas4Regresión logística
Predicciones de sí o noEl umbral de decisiónLos pesos como evidenciaVarias clasesRepaso: filtro de spam2Vecinos más cercanos
Cómo decide k-NNCómo elegir kFronteras de decisiónEscalado para los vecinosRepaso: vecinos del vino5Medición de clasificadores
La matriz de confusiónPrecisión y exhaustividadLa puntuación F1Clases desequilibradasCurvas ROCRepaso: prueba de detección8Validación cruzada
Validación K-FoldComparación justa de modelosBúsqueda en cuadrículaRepaso: reparaciones de monopatines11Proyecto: especies de pingüinos
Conoce a los pingüinosPrepara los datosElige un modeloAjusta el modelo ganadorPublica el modelo3Regresión lineal
Predicción de númerosVarias característicasMedición de erroresGráficos de residuosRepaso: alquiler de bicicletas6Árboles de decisión
Los árboles hacen preguntasLeer un árbolProfundidad del árbolImportancia de las característicasRepaso: decisiones de préstamos9Métodos de conjunto
Bosques aleatoriosPor qué funcionan los bosquesAumento de gradienteRepaso: guardabosques12Desafíos finales
Progreso de la diabetesAprobación de créditoDígitos escritos a manoAbandono de clientesPractica por tu cuenta: Compilador de Python online