sevvaliclal's picture
Update README.md
fc7005c verified
|
Raw
History Blame Contribute Delete
2.32 kB
---
title: Binary Classification with a Bank Churn Dataset
emoji: 🚀
colorFrom: indigo
colorTo: indigo
sdk: streamlit
app_file: src/app.py
sdk_version: 1.54.0
pinned: false
license: mit
---
# Customer Churn Prediction
An end-to-end machine learning project for predicting **customer churn** using structured banking data.
The project covers the full pipeline from data analysis to model deployment readiness.
---
## 📌 Project Overview
The goal of this project is to predict whether a customer will leave the bank (`Exited = 1`) based on
demographic, financial, and behavioral features.
The main focus is:
- Robust feature engineering
- Model comparison using multiple algorithms
- ROC-AUC–based evaluation for imbalanced data
- Cross-validation and hyperparameter tuning
- Saving the final model for inference and deployment
---
## 📊 Dataset
- Rows: **165,034**
- Target: `Exited` (binary classification)
- No missing values
- Categorical features encoded
- Multiple engineered behavioral features added
---
## ⚙️ Feature Engineering
Key engineered features include:
- Balance usage indicator (`HasBalance`)
- Balance per product ratio
- Age and credit score segmentation
- Activity × product interaction score
- Tenure and salary-based ratios
Identifier columns (`id`, `CustomerId`, `Surname`) were removed to avoid noise.
---
## 🤖 Models Trained
The following models were evaluated:
- Logistic Regression
- Decision Tree
- Random Forest
- Gradient Boosting
- AdaBoost
- LightGBM
- XGBoost
- CatBoost
All models were evaluated using **ROC-AUC** as the primary metric.
---
## 🏆 Model Performance (ROC-AUC)
| Model | ROC-AUC |
|------|--------|
| CatBoost | 0.8898 |
| LightGBM | 0.8896 |
| XGBoost | 0.8893 |
| Gradient Boosting | 0.8881 |
| AdaBoost | 0.8767 |
| Random Forest | 0.8750 |
| Logistic Regression | 0.8180 |
---
## 🔁 Validation & Tuning
- **Stratified K-Fold Cross Validation**
- **RandomizedSearchCV** for hyperparameter tuning
- Class imbalance handled using class weights
- Final model trained with optimal hyperparameters
---
## 🚀 Deployment
The trained model is saved and can be used for inference via:
- Streamlit
- Hugging Face Spaces
- Any Python-based backend
To run the Streamlit app locally:
```bash
streamlit run app.py