| title | Futurisys |
|---|---|
| emoji | 🚀 |
| colorFrom | blue |
| colorTo | indigo |
| sdk | docker |
| app_file | Dockerfile |
| pinned | false |
Projet pédagogique et pré-commercial de déploiement d’un modèle de Machine Learning via FastAPI et Docker.
→ Voir l’API en ligne sur Hugging Face Spaces »
Exemples d'utilisation ·
Tests ·
Feuille de route ·
Contact
- À propos du projet
- Structure du projet
- Installation
- Utilisation
- Détails techniques du modèle
- Tests
- CI/CD et déploiement
- Base de données et traçabilité
- Technologies utilisées
- Feuille de route
- Licence
- Contact
FUTURISYS est une entreprise innovante souhaitant rendre ses modèles de machine learning accessibles via une API performante.
Ce projet vise à déployer un modèle de classification issu du projet “Classification automatique d’informations”.
Objectifs principaux :
- Exposer un modèle ML via une API FastAPI.
- Gérer la traçabilité via PostgreSQL.
- Mettre en place une pipeline CI/CD GitHub Actions.
- Déployer sur Hugging Face Spaces via Docker.
- Documenter et tester entièrement le projet.
FUTURISYS/
├── app/
│ ├── main.py # Point d'entrée de l'API FastAPI
│ ├── model/ # Modèle entraîné + préprocesseur
│ │ ├── model.joblib
│ │ └── preprocessing.joblib
│ ├── utils/ # Fonctions utilitaires
│ └── tests/ # Tests unitaires Pytest
├── data/ # Jeux de données
├── pyproject.toml # Géré par uv
├── uv.lock
├── .python-version
├── Dockerfile # Pour l'initialisation sur huggingface
├── .github/
│ └── workflows/ci.yml # Pipeline CI/CD (GitHub Actions)
└── README.md
git clone https://github.com/RandomFab/FUTURISYS.git
cd FUTURISYSuv syncuvicorn app.main:app --reloadAPI disponible sur :
- Dev : http://127.0.0.1:8000
- Prod : https://randomfab-futurisys.hf.space
→ Swagger : http://127.0.0.1:8000/docs
| Endpoint | Description |
|---|---|
/docs |
Documentation Swagger |
/threshold |
Seuil de classification |
/features |
Liste des features |
/model-info |
Informations du modèle |
/predict_from_transformed_data |
Prédiction avec datas transformées |
/predict_from_raw_data |
Prédiction avec datas brutes |
/predict_from_db_employe |
Prédiction via BDD employés |
import requests
url = "http://127.0.0.1:8000/predict_from_raw_data"
payload = {
"heure_supplementaires": 1,
"age": 35,
"frequence_deplacement": 1,
"niveau_education": 1,
"poste": "Assistant de Direction",
"statut_marital": "Célibataire",
"annees_dans_l_entreprise": 5,
"nombre_experiences_precedentes": 2,
"annees_dans_le_poste_actuel": 1,
"annee_experience_totale": 10
}
response = requests.post(url, json=payload)
print(response.json())- Modèle : HistGradientBoostingClassifier
- Tâche : Classification binaire (Reste(0) / Quitte(1) l’entreprise)
- Objectif : Anticiper le départ d’un collaborateur
- Source : Données internes TECHNOVA
pipeline = IMBpipeline([
('preprocessing', preprocessor),
('smote', SMOTE(sampling_strategy=0.2, random_state=42)),
('under', RandomUnderSampler(sampling_strategy=0.8, random_state=42)),
('model', HistGradientBoostingClassifier(random_state=42))
])Optimisation : Recall prioritaire pour détecter les départs.
Sauvegarde via joblib.
uv run pytest --maxfail=1 --disable-warnings -q --cov=. --cov-report=htmlRapport HTML complet dans /htmlcov.
Pipeline GitHub Actions :
- Tests à chaque push ou PR.
- Rapport de couverture.
- Déploiement automatique sur Hugging Face Spaces.
Secrets configurés via GitHub.
Données de bases importer depuis 3 csv (SIRH, evaluation annuelle, sondage), dans une base postgreSQL locale.
Intégration PostgreSQL pour tracer les inputs et outputs du modèle.
Type de relations :
- employes - inputs : 1-N
- inputs - outputs : 1-1
| Technologie | Usage |
|---|---|
| Python 3.13 | Langage principal |
| FastAPI | API |
| uv | Dépendances |
| scikit-learn / imbalanced-learn | ML |
| SQLAlchemy / psycopg2 | ORM / PostgreSQL |
| pytest / pytest-cov | Tests |
| Docker | Conteneurisation |
| GitHub Actions | CI/CD |
| Hugging Face Spaces | Déploiement |
- ✅ Création du dépôt
- ✅ API FastAPI
- ✅ PostgreSQL
- ✅ CI/CD
- ✅ Déploiement HF
- ✅ Documentation finale
📄 Projet pédagogique et commercial — tous droits réservés.
Utilisable à des fins éducatives et démonstratives.
Toute réutilisation commerciale doit mentionner RandomFab.
👤 Auteur : RandomFab
🌐 Démo : randomfab-futurisys.hf.space
