Data-driven analysis of nutritional risk patterns in African cuisines using SQL aggregation and interactive Power BI dashboards.
# African Recipes — Nutritional Risk Analyser & Explorer
A full end-to-end data science project that collects African recipes from multiple sources,
maps their ingredients to USDA and West African nutritional databases, calculates per-serving
nutrition, scores each recipe for nutritional risk against WHO dietary guidelines, trains ML
classifiers to identify risk drivers, and presents everything in an interactive Streamlit dashboard.
**Live app:** olwakhe-nutrition-risk.streamlit.app
---
## Key Results
| Metric | Value |
|---|---|
| Recipes in dataset | 1 188 |
| Recipes successfully scored | 1 179 (99.2 %) |
| Insufficient data (unscored) | 9 |
| Average weighted risk score | ~22 / 100 |
| High or Very High risk recipes | ~132 (11 %) |
**Risk distribution (weighted score method)**
| Risk Level | Score range | Recipes |
|---|---|---|
| Low | 0–25 | 879 |
| Medium | 25–50 | 168 |
| High | 50–75 | 100 |
| Very High | 75–100 | 32 |
**Key findings:**
- **Energy density is the strongest driver of High risk** — ahead of sodium. This was confirmed independently by both ML models (Logistic Regression and Random Forest).
- **Sodium and fat are nearly equal drivers of Very High risk.** The 30 % sodium weighting in the rule-based scorer is validated at the extreme end of the scale.
- **Carbohydrates are the weakest risk predictor** despite being the dietary staple of African cuisine. Risk comes from what accompanies the carbohydrate base (fats, salt, sugar), not the staple itself.
- **74 % of recipes score Low risk** — traditional African cooking is not inherently high-risk. High-risk recipes cluster around specific preparation patterns: deep-frying, heavy bouillon cube usage, and large portions of red meat.
---
## Project Overview
African cuisines are under-represented in global nutritional databases, making it difficult
to assess the dietary risk associated with traditional meal patterns.
This project addresses that gap by:
1. Assembling a dataset of **1 188 Afri …