Menu
CoddyTech

Zatwierdzanie kredytów

Część sekcji Uczenie nadzorowane ścieżki Machine Learning w Coddy. Lekcja 56 z 58.

Bank spółdzielczy prowadzi kartę sklepową. W pliku cards.csv 79 spośród 320 posiadaczy zalegało ze spłatami w pierwszym roku:

Histogramy gęstości wskaźnika zadłużenia dla 241 posiadaczy, którzy terminowo spłacali należności, głównie w przedziale od 0.1 do 0.35, oraz 79 osób, które zalegały ze spłatami — przesunięte w prawo, w kierunku przedziału od 0.3 do 0.8, z dużym obszarem nakładania się

Zadłużenie pomaga, ale grupy się pokrywają. Bank oceni ryzyko każdego wnioskodawcy i prześle osobie do weryfikacji każdego, kto przekroczy ustalony próg.

Jego zasada: wychwycić ustalony odsetek osób, które będą spóźniać się z płatnościami. Wybierz próg na wierszach walidacyjnych, a następnie oceń go raz na wierszach testowych.

challenge icon

Wyzwanie

Trudny

Program odczytuje wymagany przez bank współczynnik czułości, target. Kod początkowy zawiera listę kolumn i wartości thresholds, od najwyższej.

  1. Wydziel uwarstwiony zbiór testowy stanowiący jedną czwartą danych, a następnie uwarstwiony zbiór walidacyjny stanowiący jedną czwartą pozostałych danych; w obu przypadkach użyj random_state=0.
  2. Dopasuj potok do pozostałych wierszy treningowych: uzupełnij braki medianą i przeskaluj wartości liczbowe, zakoduj home metodą one-hot i zastosuj regresję logistyczną.
  3. Na zbiorze walidacyjnym wybierz pierwszą wartość progową, przy której współczynnik czułości osiąga target.
  4. Wypisz tę wartość, a następnie pokaż, jak wypadły przy niej wiersze testowe, jak poniżej (3 miejsca po przecinku).

Dla innego banku i 0.7:

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

Spróbuj swoich sił

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]

# Napisz swój kod poniżej
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Uczenie nadzorowane

Poćwicz samodzielnie: Kompilator Python online