--- 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