PCelia commited on
Commit
668f422
·
verified ·
1 Parent(s): 180a7cc

Upload folder using huggingface_hub

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