StopDiabète — Application de prédiction du risque de diabète
StopDiabète est une application full‑stack conçue pour prédire le risque de diabète à partir de données cliniques simples (âge, IMC, HbA1c, antécédents, tabagisme...). L'interface publique est disponible ici : stopdiabete.streamlit.app.
Technologies et rôle
- FastAPI + Uvicorn : Backend API REST exposant l'endpoint /predict. Traitement JSON, validation et gestion d'erreurs.
- Streamlit : Frontend interactif pour saisir les données, afficher résultats et informations pédagogiques.
- XGBoost : Modèle de classification entraîné pour estimer la probabilité de diabète.
- scikit‑learn : Preprocessing (StandardScaler) et utilitaires ; joblib pour sérialisation du scaler.
- joblib / format natif XGBoost : Sauvegarde des artefacts (scaler.joblib, best_xgb_model.json) pour un chargement rapide en production.
- Déploiement : Backend hébergé sur Render (plan gratuit) ; frontend hébergé sur Streamlit Cloud qui appelle le backend via son URL publique.
Fonctionnement (flux)
- L'utilisateur saisit ses données dans l'UI Streamlit.
- Le frontend envoie une requête POST JSON au backend FastAPI (Render).
- Le backend charge le scaler et le modèle, normalise les données, construit un xgb.DMatrix puis prédit la probabilité.
- Le backend renvoie la classe et la probabilité ; le frontend affiche le résultat et des conseils.
Remarques pratiques
Le backend est déployé sur le plan gratuit de Render : l'instance gratuite se met en veille lorsqu'elle est inactive. Au réveil, le service peut mettre environ 50 secondes pour redevenir opérationnel — d'où un délai initial lors du premier accès.
Résumé
Projet utile pour démontrer : conception d'API sécurisées et légères (FastAPI), intégration de modèles ML en production (XGBoost + joblib), déploiement cloud pour prototypes, et développement d'interfaces utilisateur rapides (Streamlit). Le code et les artefacts peuvent être organisés dans un dépôt GitHub pour CI/CD et versioning modèle.
StopDiabete — Diabetes risk prediction app
StopDiabete is a full‑stack application that predicts diabetes risk from simple clinical inputs (age, BMI, HbA1c, history, smoking...). Public demo: stopdiabete.streamlit.app.
Technologies & responsibilities
- FastAPI + Uvicorn: REST backend exposing /predict. Handles JSON, validation and errors.
- Streamlit: Interactive frontend for data entry, result display and educational content.
- XGBoost: Trained classifier providing probability predictions.
- scikit‑learn: Preprocessing (StandardScaler) and joblib serialization for the scaler.
- joblib / XGBoost native format: Artifacts saved as scaler.joblib and best_xgb_model.json for reliable loading in production.
- Deployment: Backend hosted on Render (free tier); frontend on Streamlit Cloud calling the Render backend via a public URL.
End‑to‑end flow
- User fills the form in the Streamlit UI.
- Frontend sends a POST JSON request to the FastAPI backend on Render.
- Backend loads scaler/model, scales input, builds an xgb.DMatrix and calls model.predict.
- Backend returns class and probability; frontend displays the decision and guidance.
Practical note
The backend runs on Render's free tier which sleeps when idle. Waking the instance typically takes about 50 seconds — expect an initial delay when first accessing the app.
Summary
This project highlights API development (FastAPI), ML model productionization (XGBoost + serialization), and fast UI prototyping (Streamlit). Suitable for demonstrating end‑to‑end ML engineering and rapid deployment of prototypes. I will be adding CI/CD, model versioning and external artifact storage (S3) as next steps.