Spaces:
Sleeping
Sleeping
File size: 4,306 Bytes
51f9963 668f422 51f9963 668f422 044baa7 668f422 044baa7 668f422 044baa7 668f422 044baa7 668f422 044baa7 668f422 044baa7 668f422 044baa7 668f422 044baa7 668f422 044baa7 668f422 044baa7 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 | ---
title: Futurisys API
emoji: 🚀
sdk: docker
pinned: false
---
# Futurisys - Déploiement d'un modèle de Machine Learning
## Sommaire
- [À propos](#à-propos)
- [Fonctionnalités](#fonctionnalités)
- [Prérequis](#prérequis)
- [Installation](#installation)
- [Utilisation](#utilisation)
- [Tests](#tests)
- [Déploiement](#déploiement)
- [Structure du projet](#structure-du-projet)
- [Technologies utilisées](#technologies-utilisées)
- [Contribution](#contribution)
- [Licence](#licence)
## À propos
L'entreprise Futurisys souhaite rendre ses modèles de machine learning opérationnels et accessibles via une API performante. L'objectif est de déployer un modèle prédictif issu du projet "Anticiper les départs potentiels d'employés". Cette API utilise FastAPI pour fournir des prédictions sur le départ potentiel des employés en se basant sur diverses caractéristiques.
## Prérequis
- Python 3.13
- uv (gestionnaire de paquets moderne pour Python)
- Git
- Docker (pour le déploiement en conteneur)
## Installation
### Cloner le dépôt
git clone https://CelPri/ML_Futurisys.git
cd ML_Futurisys
### Installer les dépendances
uv sync
## Utilisation
### Lancer l'API localement
uvicorn app.main:app --reload
API disponible sur :
Dev : http://127.0.0.1:8000
Prod : https://pcelia-futurisys-api.hf.space/docs
→ Swagger : http://127.0.0.1:8000/docs
### Endpoints principaux
- **GET /** : Message de bienvenue et lien vers la documentation.
- **GET /threshold** : Retourne le seuil de décision du modèle.
- **POST /predict** : Effectue une prédiction à partir de données brutes.
- Corps de la requête : Objet JSON avec les caractéristiques de l'employé.
- **POST /predict_from_db_employe** : Effectue une prédiction pour un employé existant dans la DB.
- Paramètre : `employee_id` (query parameter).
- **Docs** : Documentation Swagger
### Exemple de requête
```bash
curl -X POST "http://localhost:8000/predict" \
-H "Content-Type: application/json" \
-d '{
"age": 35,
"revenu_mensuel": 5000.0,
"statut_marital": "Marié",
"departement": "IT",
"poste": "Développeur",
"annee_experience_totale": 10,
"annees_dans_l_entreprise": 5,
"annees_dans_le_poste_actuel": 3,
"satisfaction_employee_environnement": 4,
"note_evaluation_precedente": 3.5,
"satisfaction_employee_nature_travail": 4,
"satisfaction_employee_equipe": 4,
"satisfaction_employee_equilibre_pro_perso": 3,
"note_evaluation_actuelle": 4.0,
"heure_supplementaires": "Non",
"augementation_salaire_precedente": 0.05,
"nombre_participation_pee": 2,
"frequence_deplacement": "Rarement",
"annes_sous_responsable_actuel": 2
}'
```
## Tests
Exécuter les tests unitaires :
pytest
Pour la couverture :
pytest --cov=app
## Déploiement
### Avec Docker
Construire l'image :
```bash
docker build -t ml-futurisys .
```
Lancer le conteneur :
```bash
docker run -p 7860:7860 ml-futurisys
```
L'API sera accessible sur `http://localhost:7860`.
## Structure du projet
- `app/` : Code de l'application
- `main.py` : Application FastAPI principale
- `database.py` : Configuration de la base de données
- `models.py` : Modèles de données SQLAlchemy
- `feature_engineering.py` : Fonctions d'ingénierie des caractéristiques
- `model/` : Modèle entraîné (model_Futurisys.joblib)
- `data/` : Fichiers de données d'exemple
- `tests/` : Scripts de tests unitaires
- `docs/` : Documentation et supports de présentation
- `Dockerfile` : Configuration Docker
- `pyproject.toml` : Configuration du projet Python
- `requirements.txt` : Dépendances Python
- `import_csv_to_sqlite.py` : Script d'import des données CSV vers SQLite
## Technologies utilisées
- **FastAPI** : Framework web pour l'API
- **scikit-learn** : Bibliothèque de machine learning
- **SQLAlchemy** : ORM pour la base de données
- **Pydantic** : Validation des données
- **joblib** : Sérialisation du modèle
- **uvicorn** : Serveur ASGI
- **Docker** : Conteneurisation
## Contribution
Les contributions sont les bienvenues ! Veuillez créer une issue ou une pull request pour toute amélioration.
## Licence
Ce projet est sous licence MIT.
|