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:
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.
Wyzwanie
TrudnyProgram odczytuje wymagany przez bank współczynnik czułości, target. Kod początkowy zawiera listę kolumn i wartości thresholds, od najwyższej.
- 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. - Dopasuj potok do pozostałych wierszy treningowych: uzupełnij braki medianą i przeskaluj wartości liczbowe, zakoduj
homemetodą one-hot i zastosuj regresję logistyczną. - Na zbiorze walidacyjnym wybierz pierwszą wartość progową, przy której współczynnik czułości osiąga
target. - 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.556Spró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
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Uczenie nadzorowane
1Twój pierwszy model
Uczenie się na przykładachZbiory treningowe i testoweDopasowywanie i przewidywanieOcena modeluPodsumowanie: Sortownik nasion4Regresja logistyczna
Przewidywanie „tak” lub „nie”Próg decyzyjnyWagi jako dowodyWiele klasPodsumowanie: filtr spamu2Najbliżsi sąsiedzi
Jak działa k-NNWybór kGranice decyzyjneSkalowanie dla sąsiadówPodsumowanie: sąsiedzi w zbiorze Wine5Ocena klasyfikatorów
Macierz pomyłekPrecyzja i czułośćWynik F1Niezrównoważone klasyKrzywe ROCPodsumowanie: test przesiewowy8Walidacja krzyżowa
Walidacja k-krotnaUczciwe porównywanie modeliPrzeszukiwanie siatkiPodsumowanie: naprawa deskorolki11Projekt: Gatunki pingwinów
Poznaj pingwinyPrzygotuj daneWybierz modelDopracuj zwycięski modelWdróż model3Regresja liniowa
Przewidywanie wartości liczbowychWiele cechPomiar błędówWykresy resztPodsumowanie: wypożyczanie rowerów6Drzewa decyzyjne
Drzewa zadają pytaniaCzytanie drzewaGłębokość drzewaWażność cechPodsumowanie: decyzje kredytowe12Wyzwania końcowe
Postępy w leczeniu cukrzycyZatwierdzanie kredytówOdręcznie pisane cyfryRezygnacja klientówPoćwicz samodzielnie: Kompilator Python online