awe-builds/customer-churn-prediction — explained in plain English
Analysis updated 2026-05-18
Predict which telecom customers are at risk of canceling their subscription.
Study a real example of choosing a simpler model over a more complex one.
Learn how to deploy a trained machine learning model as a Docker-packaged API.
See how SHAP explains individual predictions in a churn model.
| awe-builds/customer-churn-prediction | akashsingh3031/python-libraries | akshit-python-programmer/text-detection-using-neural-network | |
|---|---|---|---|
| Stars | 0 | — | 0 |
| Language | Jupyter Notebook | Jupyter Notebook | Jupyter Notebook |
| Last pushed | — | 2020-12-03 | — |
| Maintenance | — | Dormant | — |
| Setup difficulty | moderate | easy | easy |
| Complexity | 3/5 | 1/5 | 2/5 |
| Audience | data | vibe coder | vibe coder |
Figures from each repo's GitHub metadata at analysis time.
Requires Docker Desktop, or a local Python environment with pinned dependencies to avoid version mismatch errors.
This project builds a complete machine learning system that predicts which telecom customers are likely to cancel their service. It goes from raw customer data all the way to a working API you can call over the internet, packaged in a Docker container so it runs the same way anywhere. The goal is not to chase the highest possible accuracy score. The dataset is imbalanced, with about 73 percent of customers staying and only 27 percent leaving, so a lazy model could just guess "no churn" every time and still look accurate while being useless. Instead the project is built and judged around recall, meaning how many actual churners the model correctly catches, since missing a customer who is about to leave costs a business far more than a false alarm. The final chosen model is a Balanced Logistic Regression that catches 79 percent of customers who actually churn. A more complicated XGBoost model, tuned through 60 different configurations, only reached 81 percent recall, a tiny improvement, and it actually did worse on a combined accuracy measure called F1 score. The simpler model was picked instead because it is easier to understand, faster to run, and simpler to deploy. Using exploratory analysis and an explainability technique called SHAP, the project found that customers with fiber optic internet churn more often, even after accounting for their monthly bill, suggesting a real product problem rather than just a pricing one. Customers on two year contracts and long time customers were the least likely to leave, while brand new month to month customers were the highest risk. The steps covered are data cleaning, fixing a hidden bug where charges were stored as text instead of numbers, trying several models, explaining the results, and finally wrapping the trained model in a FastAPI web service and a Docker container. The tech stack includes Python, scikit-learn, XGBoost, pandas, and FastAPI. The author notes that deployment problems, not the modeling itself, were the hardest and most educational part of building this.
A machine learning tool that predicts which telecom customers will cancel their service, deployed as a working API in a Docker container.
Mainly Jupyter Notebook. The stack also includes Python, scikit-learn, XGBoost.
No license information is provided in the README.
Setup difficulty is rated moderate, with roughly 30min to a first successful run.
Mainly data.
This repo across BitVibe Labs
double-check against the repo, no cap.