אישור אשראי
חלק מהיחידה למידה מונחית במסלול ה-Machine Learning של Coddy. שיעור 56 מתוך 58.
בנק שיתופי מפעיל כרטיס אשראי של חנות. בקובץ cards.csv, 79 מתוך 320 בעלי הכרטיס פיגרו בתשלומים במהלך השנה הראשונה:
חוב עוזר, אבל הקבוצות חופפות. הבנק יעריך את הסיכון של כל מבקש וישלח כל מי שציונו מעל לסף לבדיקה אנושית.
הכלל שלו: לתפוס חלק מוגדר מראש מהמאחרים בתשלומים בעתיד. בחרו את הסף על שורות האימות, ואז העריכו אותו פעם אחת על שורות הבדיקה.
אתגר
קשההתוכנית קוראת את שיעור ההיזכרות שהבנק רוצה, target. קוד הפתיחה מפרט את העמודות ואת thresholds, מהגבוה לנמוך.
- הפרידו רבע מהנתונים לבדיקה באופן מרובד, ואז רבע מהנתונים שנותרו לאימות באופן מרובד; בשני המקרים השתמשו ב-
random_state=0. - אמנו צינור על שורות האימון שנותרו: השלימו ערכים חסרים במספרים באמצעות החציון ותקננו אותם, בצעו קידוד one-hot לעמודה
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 אונליין