# SME Business Distress Predictor — East Africa
**BIT 2303 / SDS 2406 — Final Year Project**
**Student:** Gedion Leslie Kweya Odera · SCT213-C002-0062/2022
**Supervisor:** Mr. Adhola Samuel · JKUAT
---
## 🚀 Live Dashboard
---
## 📋 Project Overview
This project predicts business distress risk in East African SMEs using machine learning
applied to World Bank Enterprise Survey data from **14,688 firms across 8 countries**.
Businesses are classified into three risk levels:
- **Stable** — No active distress signals
- **Moderate Risk** — One distress signal present
- **High Risk** — Two or more distress signals active simultaneously
**Three distress signals:**
1. Credit Constraint — needs financing but cannot access it
2. Employment Shrinkage — workforce fell >10% over 3 years
3. Low Capacity Utilisation — operating below 60% capacity
---
## 📊 Results
| Model | ROC-AUC | F1 (macro) | F1 (High Risk) |
|-------|---------|------------|----------------|
| Logistic Regression | 0.9507 | 0.7824 | 0.6352 |
| Random Forest | 1.0000 | 0.9970 | 0.9924 |
| XGBoost (initial) | 1.0000 | 0.9985 | 0.9962 |
| **XGBoost (tuned) ★** | **1.0000** | **0.9985** | **0.9962** |
**Top SHAP predictors:** Credit Constrained · Employment Growth · Capacity Utilisation
---
## 🗂️ Repository Structure
```
kenya-sme-distress-ml/
│
├── app.py # Streamlit entry point
├── utils.py # Shared model loading and constants
├── requirements.txt
├── README.md
│
├── pages/
│ ├── 1_Overview.py # Dataset stats and class distribution
│ ├── 2_Predictor.py # Comprehensive investor predictor
│ ├── 3_Model_Performance.py # Evaluation results
│ ├── 4_SHAP.py # Feature importance
│ └── 5_Geography.py # Country analysis
│
├── models/ # Trained model pkl files
│ ├── model_logistic_regression.pkl
│ ├── model_xgboost.pkl
│ ├── model_xgboost_tuned.pkl
│ ├── scaler.pkl
│ └── feature_names.pkl …