신용 승인
Coddy Machine Learning 여정의 지도 학습 섹션에 포함된 레슨. 58개 중 56번째.
협동조합 은행이 스토어 카드를 운영합니다. cards.csv에서 첫해에 카드 소지자 320명 중 79명이 결제를 연체했습니다:
부채는 도움이 되지만, 그룹은 서로 겹칩니다. 은행은 각 신청자의 위험도를 평가하고, 임계값을 초과하는 사람은 모두 검토를 위해 담당자에게 보냅니다.
이 규칙의 목표는 향후 연체할 사람 중 일정 비율을 찾아내는 것입니다. 검증 행에서 임계값을 선택한 다음, 테스트 행에서 한 번 평가합니다.
챌린지
어려움이 프로그램은 은행이 원하는 재현율인 target을 읽습니다. 시작 코드에는 열과 가장 높은 값부터 나열된 thresholds가 있습니다.
- 층화 방식으로 테스트용 4분의 1을 분리한 다음, 남은 데이터에서 층화 방식으로 검증용 4분의 1을 분리합니다. 두 경우 모두
random_state=0을 사용합니다. - 남은 학습 행에 파이프라인을 학습시킵니다. 숫자에는 중앙값 대체와 스케일링을 적용하고,
home에는 원-핫 인코딩을 적용한 다음 로지스틱 회귀를 사용합니다. - 검증 데이터에서 재현율이
target에 도달하는 첫 번째 임계값을 선택합니다. - 아래와 같이 해당 임계값을 출력한 다음, 테스트 행에서의 결과를 출력합니다(소수점 이하 3자리).
다른 은행의 데이터와 0.7을 사용하면 다음과 같습니다.
Threshold: 0.3 (validation recall 0.733)
Test: caught 15 of 21 late payers, 12 false alarms
Precision: 0.556직접 해보기
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]
# 아래에 코드를 작성하세요
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
지도 학습의 모든 레슨
직접 연습해 보세요: 온라인 Python 컴파일러