I Developed a "Credit Risk Assessment" model - A machine learning model that predicts the likelihood of loan applicants defaulting on loan repayment.

in LeoFinancelast month

This publication is also made in Spanish and Italian.

Good day, everyone! Today, I'm excited to share the project I developed, an AI-powered solution titled "Credit Risk Assessment." This model was trained on "Random Forest Classification" Algorithm.

Live App URL: https://loan-defaulters-prediction-model.streamlit.app/

Github: https://github.com/Anyi-global/credit-risk-prediction-model-3MTT-july-knowledge-showcase/blob/master/credit-risk-predictive-model.ipynb

The Problem:
In Nigeria and beyond, one major challenge financial institutions face is identifying borrowers who are likely to default on loan repayment. Poor decisions on this can lead to revenue loss, bad debt, and even the collapse of micro-lenders.

The Solution:
To tackle this challenge, I developed a machine learning predictive model that predicts the likelihood of loan applicants defaulting before the loan is given. The model takes in key applicant information such as Age, Income, Home Ownership Type, Work Experience, Loan Intent, and so on...

Using this, it predicts whether a person is a likely defaulter, giving financial institutions a data-driven decision tool.

Here’s how I built it:
✔️ I used a real-world credit risk dataset.
✔️ Cleaned and preprocessed the dataset
✔️ Encoded categorical features using LabelEncoder.
✔️ Scaled numerical inputs using StandardScaler.
✔️ I trained several models: Logistic Regression, Decision Tree, K-Nearest Neighbors, Random Forest, Gradient Boosting, and XGBoost.
✔️ Random Forest gave the best results with an accuracy of 92.9% and an F1 score of 0.80.

I also applied class weighting to handle imbalanced classes, improving recall on defaulters.

Credit risk home page.PNG

Credit risk predict button.PNG

Dataset Source: Kaggle (https://www.kaggle.com/datasets/laotse/credit-risk-dataset/data)

The web app for the demo was built using Streamlit, and was deployed on Streamlit Cloud to make the model usable by non-technical stakeholders.

Users input borrower details like age, income, loan intent, and so on.
With just one click, the system predicts:
☑️ Whether the borrower is likely to default
☑️ The confidence (probability) level of that prediction

This solution can help:
1️⃣ Microfinance banks
2️⃣ Digital lenders
3️⃣ Fintechs
4️⃣ Even cooperative societies to make data-driven decisions.

By identifying risky borrowers upfront, institutions can reduce defaults and lend more confidently, boosting financial inclusion while managing risk.

What I Learned:
As a Data Science Fellow, this project helped me gain hands-on experience in:
✅ Supervised machine learning
✅ Model Training
✅ Model evaluation using precision, recall, and F1 score
✅ And deploying ML solutions with Streamlit

Thank you for your time!



SPANISH TRANSLATION
¡Buen día a todos! Hoy me complace compartir el proyecto que desarrollé: una solución basada en IA llamada "Evaluación del Riesgo Crediticio". Este modelo se entrenó con el algoritmo de clasificación de bosque aleatorio.

Live App URL: https://loan-defaulters-prediction-model.streamlit.app/

Github: https://github.com/Anyi-global/credit-risk-prediction-model-3MTT-july-knowledge-showcase/blob/master/credit-risk-predictive-model.ipynb

El problema:
En Nigeria y otros países, un desafío importante para las instituciones financieras es identificar a los prestatarios con probabilidad de incumplir con el pago de sus préstamos. Las malas decisiones al respecto pueden provocar pérdidas de ingresos, deudas incobrables e incluso el colapso de las microfinanzas.

La solución:
Para abordar este desafío, desarrollé un modelo predictivo de aprendizaje automático que predice la probabilidad de que los solicitantes de préstamos incumplan antes de que se les otorgue el préstamo. El modelo toma información clave del solicitante, como edad, ingresos, tipo de propiedad de la vivienda, experiencia laboral, intención de préstamo, etc.

Con esto, predice si una persona es propensa a incumplir, lo que proporciona a las instituciones financieras una herramienta de toma de decisiones basada en datos.

Así es como lo construí:
✔️ Utilicé un conjunto de datos de riesgo crediticio real.
✔️ Depuré y preprocesé el conjunto de datos.
✔️ Codifiqué las características categóricas con LabelEncoder.
✔️ Escalaré las entradas numéricas con StandardScaler.
✔️ Entrené varios modelos: Regresión logística, Árbol de decisión, K-Vecinos más cercanos, Bosque aleatorio, Potenciación de gradiente y XGBoost.
✔️ El Bosque aleatorio obtuvo los mejores resultados con una precisión del 92,9 % y una puntuación F1 de 0,80.

También apliqué ponderación de clases para manejar clases desequilibradas, mejorando así el recuerdo de los incumplidores.

Credit risk home page.PNG

Credit risk predict button.PNG

Dataset Source: Kaggle (https://www.kaggle.com/datasets/laotse/credit-risk-dataset/data)

La aplicación web para la demostración se creó con Streamlit y se implementó en Streamlit Cloud para que el modelo fuera utilizable por personas sin conocimientos técnicos.

Los usuarios introducen datos del prestatario, como edad, ingresos, intención de préstamo, etc.
Con un solo clic, el sistema predice:
☑️ Si el prestatario es propenso a incumplir
☑️ El nivel de confianza (probabilidad) de esa predicción

Esta solución puede ayudar a:
1️⃣ Bancos de microfinanzas
2️⃣ Prestamistas digitales
3️⃣ Fintechs
4️⃣ Incluso a cooperativas de crédito a tomar decisiones basadas en datos.

Al identificar con antelación a los prestatarios de riesgo, las instituciones pueden reducir los impagos y prestar con mayor confianza, impulsando la inclusión financiera y gestionando el riesgo.

Lo que aprendí:
Como becario de ciencia de datos, este proyecto me ayudó a adquirir experiencia práctica en:
✅ Aprendizaje automático supervisado
✅ Entrenamiento de modelos
✅ Evaluación de modelos mediante precisión, recuperación y puntuación F1
✅ Implementación de soluciones de aprendizaje automático con Streamlit

¡Gracias por su tiempo!