From d7fd8432e0204c00690866c8803ec5a1b4376fa5 Mon Sep 17 00:00:00 2001 From: Admin User Date: Wed, 5 Feb 2025 19:23:01 +0000 Subject: [PATCH] PD v2 Processing block --- README.md | 11 ++++- block.py | 82 +++++++++++++++++++++++++++-------- request_schema.json | 100 ++++++++++++++++++++++++++++++++++++++++++- requirements.txt | 6 ++- response_schema.json | 11 ++++- test_block.py | 15 +++++++ xgboost_model.joblib | Bin 0 -> 262301 bytes 7 files changed, 202 insertions(+), 23 deletions(-) create mode 100644 test_block.py create mode 100644 xgboost_model.joblib diff --git a/README.md b/README.md index 59a3efc..65bfadf 100644 --- a/README.md +++ b/README.md @@ -1 +1,10 @@ -**Hello world!!!** +## Overview +This block (`block.py`) is responsible for loading and scoring the model. + +## Key Inputs & Outputs +- **Request**: Refer to `request_schema.json` for detailed input fields and validation rules. +- **Response**: Refer to `response_schema.json` for the returned structure and data types. + +## Implementation Details +- All core logic resides in `block.py` within the `__main__` function. +- Example usage and validation are demonstrated in `test_block.py`. diff --git a/block.py b/block.py index 3b227f9..82373ca 100644 --- a/block.py +++ b/block.py @@ -1,21 +1,65 @@ -@flowx_block -def example_function(request: dict) -> dict: +import logging +import xgboost as xgb +import joblib +import pandas as pd - # Processing logic here... +# Configure logging +logging.basicConfig( + level=logging.INFO, + format="%(asctime)s [%(levelname)s] %(name)s - %(message)s", +) +logger = logging.getLogger(__name__) - return { - "meta_info": [ - { - "name": "created_date", - "type": "string", - "value": "2024-11-05" - } - ], - "fields": [ - { - "name": "", - "type": "", - "value": "" - } - ] - } +def __main__(pti : float, score_results : float, BALMAG01 : float, revolving_amount_monthly_payment : float, closed_with_balance_amount_current_balance : float, AT31S : int, AT20S : int, BC21S : int, record_counts_revolving_trade_count : int, record_counts_total_trade_count : int, PAYMNT10 : float, AGG102 : float, total_amount_high_credit : float, revolving_amount_current_balance : float, total_amount_current_balance : float, REV83 : float, revolving_amount_high_credit : float, closed_with_balance_amount_monthly_payment : float, revolving_amount_percent_available_credit : float, AGG101 : float, revolving_amount_credit_limit : float, AT09S : int, US01S : int)->dict: + + input_data = { + "pti": pti, "score_results": score_results, "BALMAG01": BALMAG01, + "revolving_amount_monthly_payment": revolving_amount_monthly_payment, + "closed_with_balance_amount_current_balance": closed_with_balance_amount_current_balance, + "AT31S": AT31S, "AT20S": AT20S, "BC21S": BC21S, + "record_counts_revolving_trade_count": record_counts_revolving_trade_count, + "record_counts_total_trade_count": record_counts_total_trade_count, "PAYMNT10": PAYMNT10, + "AGG102": AGG102, "total_amount_high_credit": total_amount_high_credit, + "revolving_amount_current_balance": revolving_amount_current_balance, + "total_amount_current_balance": total_amount_current_balance, "REV83": REV83, + "revolving_amount_high_credit": revolving_amount_high_credit, + "closed_with_balance_amount_monthly_payment": closed_with_balance_amount_monthly_payment, + "revolving_amount_percent_available_credit": revolving_amount_percent_available_credit, + "AGG101": AGG101, "revolving_amount_credit_limit": revolving_amount_credit_limit, + "AT09S": AT09S, "US01S": US01S, "has_mortgage": None + } + + # Load model + try: + model = joblib.load("./xgboost_model.joblib") + # model = joblib.load("C:/Users/cbollu/Downloads/test_blocks/test_blocks/sequence-1/pd_v2_processing/xgboost_model.joblib") + except Exception as e: + logger.exception("An unexpected error occurred while loading the model.") + raise e + df_pre_processed = pd.DataFrame(input_data, index=[0]) + + if df_pre_processed.empty: + print("PD V2 Pre Processed DataFrame is empty.") + + expected_features = model.feature_names + actual_features = df_pre_processed.columns.tolist() + missing_features = [feature for feature in expected_features if feature not in actual_features] + + # Add missing features as None (NaN) values + for feature in missing_features: + df_pre_processed[feature] = None + + # Convert object columns to categorical + for col in df_pre_processed.columns: + if df_pre_processed[col].dtype == 'object': + df_pre_processed[col] = pd.Categorical(df_pre_processed[col]) + + # Prepare data for prediction + dmatrix = xgb.DMatrix(df_pre_processed[expected_features], enable_categorical=True) + + # Make prediction + prediction = model.predict(dmatrix)[0] + + logger.info(f"PD V2 Predicted Score: {prediction}") + + return {"probability": float(prediction)} \ No newline at end of file diff --git a/request_schema.json b/request_schema.json index 0967ef4..f76d81e 100644 --- a/request_schema.json +++ b/request_schema.json @@ -1 +1,99 @@ -{} +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "properties": { + "pti": { + "type": ["number", "null"], + "description": "external + internal monthly payment to income ratio" + }, + "score_results": { + "type": ["number", "null"], + "description": "TransUnion score" + }, + "BALMAG01": { + "type": ["number", "null"], + "description": "Non-mortgage balance magnitude" + }, + "revolving_amount_monthly_payment": { + "type": ["number", "null"], + "description": "Minimum amount the borrower is required to pay each month to maintain the account in good standing" + }, + "closed_with_balance_amount_current_balance": { + "type": ["number", "null"], + "description": "The current balance of closed credit accounts" + }, + "AT31S": { + "type": ["integer", "null"], + "description": "Percentage of open trades > 75% of credit line verified in past 12 months" + }, + "AT20S": { + "type": ["integer", "null"], + "description": "Months since oldest trade opened" + }, + "BC21S": { + "type": ["integer", "null"], + "description": "Months since most recent credit card trade opened" + }, + "record_counts_revolving_trade_count": { + "type": ["integer", "null"], + "description": "Records in the database related to revolving trade accounts (a credit card account)" + }, + "record_counts_total_trade_count": { + "type": ["integer", "null"], + "description": "Total number of trade-related (transaction) records" + }, + "PAYMNT10": { + "type": ["number", "null"], + "description": "Number of payments in the last quarter" + }, + "AGG102": { + "type": ["number", "null"], + "description": "Aggregate non-mortgage balances for month 2" + }, + "total_amount_high_credit": { + "type": ["number", "null"], + "description": "The highest credit amount extended across all credit accounts" + }, + "revolving_amount_current_balance": { + "type": ["number", "null"], + "description": "The current owed balance on revolving credit accounts" + }, + "total_amount_current_balance": { + "type": ["number", "null"], + "description": "The total current balance across all credit accounts" + }, + "REV83": { + "type": ["number", "null"], + "description": "Months since a revolving account last exceeded 75% utilization" + }, + "revolving_amount_high_credit": { + "type": ["number", "null"], + "description": "The highest credit amount that has been extended to the borrower in revolving credit accounts" + }, + "closed_with_balance_amount_monthly_payment": { + "type": ["number", "null"], + "description": "The monthly payment amount for closed credit accounts (loans)" + }, + "revolving_amount_percent_available_credit": { + "type": ["number", "null"], + "description": "The percentage of available credit that has been utilized in revolving credit accounts" + }, + "AGG101": { + "type": ["number", "null"], + "description": "Aggregate non-mortgage balances for month 1" + }, + "revolving_amount_credit_limit": { + "type": ["number", "null"], + "description": "The total credit limit on revolving credit accounts" + }, + "AT09S": { + "type": ["integer", "null"], + "description": "Number of trades opened in past 24 months" + }, + "US01S": { + "type": ["integer", "null"], + "description": "Number of unsecured installment trades" + } + }, + "required": [] +} diff --git a/requirements.txt b/requirements.txt index 0967ef4..c4c4de5 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1,5 @@ -{} +jsonschema==4.23.0 +xgboost==1.7.5 +joblib==1.3.2 +pandas==2.2.2 +numpy==1.23.5 \ No newline at end of file diff --git a/response_schema.json b/response_schema.json index 0967ef4..0c5408f 100644 --- a/response_schema.json +++ b/response_schema.json @@ -1 +1,10 @@ -{} +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "properties": { + "probability": { + "type": "number", + "description": "Model predicted score." + } + } + } \ No newline at end of file diff --git a/test_block.py b/test_block.py new file mode 100644 index 0000000..b2e71ae --- /dev/null +++ b/test_block.py @@ -0,0 +1,15 @@ +import unittest +from block import __main__ + +class TestBlock(unittest.TestCase): + + def test_main_success(self): + result = __main__(pti= 0.3277136364,score_results= 600.0,BALMAG01= 196.0,revolving_amount_monthly_payment= 56.0,closed_with_balance_amount_current_balance= 8411.0,AT31S= 71.0,AT20S= 166.0,BC21S= 4.0,record_counts_revolving_trade_count= 9.0,record_counts_total_trade_count= 18.0,PAYMNT10= 4.0,AGG102= 24994.0,total_amount_high_credit= 53807.0,revolving_amount_current_balance= 1635.0,total_amount_current_balance= 38353.0,REV83= 0.0,revolving_amount_high_credit= 1720.0,closed_with_balance_amount_monthly_payment= 0.0,revolving_amount_percent_available_credit= 18.0,AGG101= 11043.0,revolving_amount_credit_limit= 2000.0,AT09S= 4.0,US01S= 0.0) + self.assertAlmostEqual(result['probability'], 0.33663413, places=7) + + # def test_main_invalid_input(self): + # with self.assertRaises(TypeError): + # __main__(pti= 231,score_results= 600.0,BALMAG01= 196.0,revolving_amount_monthly_payment= 56.0,closed_with_balance_amount_current_balance= 8411.0,AT31S= 71.0,AT20S= 166.0,BC21S= 4.0,record_counts_revolving_trade_count= 9.0,record_counts_total_trade_count= 18.0,PAYMNT10= 4.0,AGG102= 24994.0,total_amount_high_credit= 53807.0,revolving_amount_current_balance= 1635.0,total_amount_current_balance= 38353.0,REV83= 0.0,revolving_amount_high_credit= 1720.0,closed_with_balance_amount_monthly_payment= 0.0,revolving_amount_percent_available_credit= 18.0,AGG101= 11043.0,revolving_amount_credit_limit= 2000.0,AT09S= 4.0,US01S= 0.0) + +if __name__ == "__main__": + unittest.main() diff --git a/xgboost_model.joblib b/xgboost_model.joblib new file mode 100644 index 0000000000000000000000000000000000000000..0199798fc318920996b0b761ee4d99c88b1d2d7f GIT binary patch literal 262301 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 F{~wCl8e0GW literal 0 HcmV?d00001