Menu
CoddyTech

Aprovação de Crédito

Parte da seção Aprendizado supervisionado do Journey de Machine Learning da Coddy. Lição 56 de 58.

Um banco cooperativo oferece um cartão de loja. Em cards.csv, 79 dos seus 320 titulares atrasaram pagamentos no primeiro ano:

Histogramas de densidade da proporção da dívida de 241 titulares que mantiveram os pagamentos em dia, principalmente entre 0.1 e 0.35, e de 79 que atrasaram, deslocados para a direita, em direção a 0.3 a 0.8, com ampla sobreposição

A dívida ajuda, mas os grupos se sobrepõem. O banco avaliará o risco de cada solicitante e encaminhará qualquer pessoa acima de um limite para análise humana.

Sua regra: identificar uma proporção definida de futuros pagadores atrasados. Escolha o limiar nas linhas de validação e, em seguida, avalie-o uma única vez nas linhas de teste.

challenge icon

Desafio

Difícil

O programa lê a revocação que o banco deseja, target. O código inicial lista as colunas e thresholds, da mais alta para a mais baixa.

  1. Separe um quarto estratificado para teste e, em seguida, um quarto estratificado do que restar para validação; em ambos, use random_state=0.
  2. Ajuste um pipeline às linhas de treinamento restantes: preencha os valores ausentes com a mediana e padronize os valores numéricos, aplique one-hot encoding a home e use regressão logística.
  3. Na validação, escolha o primeiro limiar cuja revocação atinja target.
  4. Imprima esse limiar e, em seguida, o desempenho das linhas de teste com ele, como abaixo (3 casas decimais).

Para outro banco e 0.7:

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

Experimente você mesmo

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]

# Escreva seu código abaixo
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Aprendizado supervisionado

Pratique por conta própria: Compilador de Python online