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.