Menu
CoddyTech
flag Ar iconالعربيةdown icon

الموافقة على الائتمان

جزء من قسم التعلّم الخاضع للإشراف في رحلة Machine Learning على Coddy. الدرس 56 من 58.

يدير بنك تعاوني بطاقة متجر. في cards.csv، تأخر 79 من أصل 320 حاملًا للبطاقة عن سداد المدفوعات خلال عامهم الأول:

مدرجات تكرارية للكثافة لنسبة الدين لدى 241 حاملًا للبطاقة انتظموا في السداد، وتتركز النسبة غالبًا بين 0.1 و0.35، ولدى 79 حاملًا تأخروا عن السداد، وانزاحت نحو اليمين لتتراوح بين 0.3 و0.8، مع تداخل واسع

تساعد الديون، لكن المجموعات متداخلة. سيقيّم البنك مخاطر كل متقدّم، ويُحيل كل من يتجاوز حدًا معيّنًا إلى شخص لمراجعة طلبه.

قاعدتها: التقاط نسبة محددة من المتأخرين في السداد مستقبلًا. اختر العتبة باستخدام صفوف التحقق، ثم قيّمها مرة واحدة على صفوف الاختبار.

challenge icon

التحدي

صعب

يقرأ البرنامج قيمة الاستدعاء التي يريدها البنك، target. وتعرض الشيفرة الابتدائية الأعمدة وthresholds، مرتبةً من الأعلى إلى الأدنى.

  1. افصل ربع البيانات للاختبار مع الحفاظ على التوزيع الطبقي، ثم ربعًا من البيانات المتبقية للتحقق بالطريقة نفسها، مع random_state=0 في الحالتين.
  2. درّب خط معالجة على صفوف التدريب المتبقية: عوّض القيم المفقودة في الأعداد بالوسيط وطبّق عليها التحجيم، ورمّز home بترميز one-hot، ثم استخدم الانحدار اللوجستي.
  3. على بيانات التحقق، خذ أول عتبة يصل عندها الاستدعاء إلى target.
  4. اطبعها، ثم اطبع أداء صفوف الاختبار عندها، كما هو موضح أدناه (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]

# اكتب الكود الخاص بك أدناه
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس التعلّم الخاضع للإشراف

تدرّب بنفسك: مترجم Python عبر الإنترنت