Menu
CoddyTech

Kreditgenehmigung

Teil des Abschnitts Überwachtes Lernen der Machine Learning-Journey von Coddy. Lektion 56 von 58.

Eine Genossenschaftsbank gibt eine Kundenkarte heraus. In cards.csv gerieten 79 von 320 Karteninhabern in ihrem ersten Jahr mit Zahlungen in Rückstand:

Dichtehistogramme des Verschuldungsgrads für 241 Karteninhaber, die ihre Zahlungen pünktlich leisteten, meist zwischen 0.1 und 0.35, und 79, die in Rückstand gerieten, nach rechts in Richtung 0.3 bis 0.8 verschoben, mit großer Überlappung

Schulden helfen, aber die Gruppen überschneiden sich. Die Bank bewertet das Risiko jedes Antragstellers und leitet alle Personen, deren Risiko über einem Schwellenwert liegt, zur Überprüfung an einen Menschen weiter.

Die Regel: Erfasse einen festgelegten Anteil der zukünftigen Spätzahler. Wähle den Schwellenwert anhand der Validierungszeilen und bewerte ihn anschließend einmal anhand der Testzeilen.

challenge icon

Aufgabe

Schwer

Das Programm liest den Recall ein, den die Bank erreichen möchte: target. Der Ausgangscode listet die Spalten und thresholds in absteigender Reihenfolge auf.

  1. Teile ein stratifiziertes Testviertel ab und danach ein stratifiziertes Validierungsviertel der verbleibenden Daten; verwende für beide random_state=0.
  2. Trainiere eine Pipeline mit den verbleibenden Trainingszeilen: Ersetze fehlende Werte in den Zahlen durch den Median und skaliere sie, wende One-Hot-Encoding auf home an und verwende logistische Regression.
  3. Wähle bei der Validierung den ersten Schwellenwert, dessen Recall target erreicht.
  4. Gib ihn aus und danach, wie die Testergebnisse damit ausfallen, wie unten gezeigt (3 Dezimalstellen).

Für eine andere Bank und 0.7:

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

Probier es selbst

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]

# Schreibe deinen Code unten
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Überwachtes Lernen

Übe selbstständig: Online-Python-Compiler