Back to portfolio
Bank Customer Churn Prediction (Personal Project, April 2026) hero
MLDATA ANALYSIS

Bank Customer Churn Prediction (Personal Project, April 2026)

2026

/01

The Problem

Banks lose significant revenue when customers quietly churn, often without any warning signs the business is tracking. I wanted to find out which customer signals actually predict churn, using a real 10,000-record banking dataset.

/02

What I Did

I cleaned and prepared the data with pandas and NumPy, then built exploratory visualizations — distribution plots, boxplots, and a correlation heatmap — to understand how age, account balance, and number of products related to churn before building any model. I trained a Random Forest classifier with scikit-learn, choosing it for its strong balance of interpretability and performance on tabular data, and validated it with a proper train/validation/test split and feature scaling.

Correlation heatmap

/03

What I Found

The model reached ~86-87% accuracy and a 0.86 ROC-AUC on the held-out test set. Using the confusion matrix and classification report, I identified age, number of products, and account balance as the strongest predictors of churn.

Confusion matrix
ROC curve — AUC 0.86

/04

Trade-offs & What's Next

The dataset was static and 10K rows — enough to validate the modeling approach, but not to catch drift or seasonal churn patterns a live production feed would surface. I picked Random Forest over gradient boosting deliberately: on a dataset this size, the interpretability gain (clean feature importances for stakeholders) mattered more than squeezing out another point or two of AUC. Next step would be re-running this against a live pipeline and comparing against XGBoost with proper hyperparameter tuning.

/Tech stack

  • Python
  • pandas
  • NumPy
  • scikit-learn
  • matplotlib
  • seaborn
View Code