cyrille-elie commited on
Commit
e707bc9
·
1 Parent(s): d96476a

Docs: README.md update + adding .env.example file

Browse files
Files changed (2) hide show
  1. .env.example +7 -0
  2. README.md +100 -34
.env.example ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ # Fichier d'exemple pour la configuration de l'environnement de la base de données
2
+ # Copiez ce fichier en .env et remplissez les valeurs pour votre environnement local.
3
+
4
+ POSTGRES_USER=your_db_user
5
+ POSTGRES_PASSWORD=your_strong_password
6
+ POSTGRES_DB=your_db_name
7
+ DB_HOST_PORT=5432 # Port sur localhost pour accéder à la base de données
README.md CHANGED
@@ -10,47 +10,77 @@ license: mit # Ou apache-2.0, etc. - Mettez la licence que vous souhaitez
10
 
11
  # Projet : Prédiction de l'Attrition des Employés et API
12
 
13
- Ce projet a pour objectif d'analyser les données RH afin de construire un modèle de Machine Learning capable de prédire le départ volontaire (attrition) des employés. Le modèle est ensuite exposé via une API RESTful construite avec FastAPI, prête à être déployée.
14
 
15
  ## 🎯 Objectifs
16
 
17
  * **Analyser** les facteurs clés influençant l'attrition des employés.
18
  * **Construire et Entraîner** un modèle de classification binaire performant.
19
  * **Développer une API** pour obtenir des prédictions en temps réel pour un ou plusieurs employés.
20
- * **Conteneuriser** l'application avec Docker pour un déploiement facile.
 
21
  * **Déployer** l'API sur Hugging Face Spaces.
22
- * *(Futur)* Intégrer les données avec une base de données PostgreSQL.
23
 
24
  ## 🛠️ Technologies Utilisées
25
 
26
  * **Langage :** Python 3.12
27
  * **Analyse & ML :** Pandas, NumPy, Scikit-learn, Joblib
28
  * **API :** FastAPI, Uvicorn, Pydantic
 
29
  * **Gestion de Dépendances :** Poetry
30
- * **Conteneurisation :** Docker
31
  * **Déploiement :** Hugging Face Spaces
 
32
 
33
  ## 📂 Structure du Projet
34
 
35
  Le projet est organisé de la manière suivante :
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
36
 
37
- * **`/data`**: Contient les données brutes et traitées (généralement non commitées).
38
- * **`/notebooks`**: Pour l'exploration, les tests et la mise au point des modèles.
39
- * **`/src`**: Le cœur de l'application Python.
40
- * **`/src/data_processing`**: Scripts pour charger et prétraiter les données.
41
- * **`/src/modeling`**: Scripts pour entraîner et utiliser le modèle.
42
- * **`/src/api`**: Scripts définissant l'API FastAPI (endpoints, schémas).
43
- * **`/models`**: Stocke les modèles entraînés (potentiellement via Git LFS).
44
- * **`/tests`**: Contient les tests unitaires et d'intégration.
45
- * **Fichiers Racine**: `pyproject.toml`, `Dockerfile`, `README.md`, etc., pour la configuration et la documentation.
46
-
47
- ## 🚀 Installation Locale
48
 
49
  **Prérequis :**
50
 
51
  * [Git](https://git-scm.com/)
52
  * [Python 3.12+](https://www.python.org/)
53
- * [Poetry](https://python-poetry.org/docs/#installation)
 
54
 
55
  **Étapes :**
56
 
@@ -59,48 +89,84 @@ Le projet est organisé de la manière suivante :
59
  git clone [URL_DE_VOTRE_REPO_GITHUB]
60
  cd mon_projet_attrition
61
  ```
62
- 2. **Installez les dépendances avec Poetry :**
 
63
  ```bash
64
  poetry install
65
  ```
66
- 3. **(Optionnel mais Recommandé) Créez un fichier `.env` :** À la racine du projet, pour stocker d'éventuels secrets ou configurations locales. N'oubliez pas de l'ajouter au `.gitignore`.
67
- 4. **Activez l'environnement virtuel :**
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
68
  ```bash
69
  poetry shell
70
  ```
 
71
 
72
  ## 📈 Usage
73
 
74
- *(Assurez-vous d'être dans l'environnement Poetry : `poetry shell`)*
75
 
76
- 1. **Préparer les données :** Placez vos fichiers CSV bruts dans `data/raw/`.
77
- 2. **Entraîner le modèle :**
78
  ```bash
79
  python -m src.modeling.train_model
80
  ```
81
- 3. **Lancer l'API FastAPI :**
 
 
82
  ```bash
83
  uvicorn src.api.main:app --reload
84
  ```
 
85
 
86
  ## 🔌 API Endpoints
87
 
88
- Une fois l'API lancée, vous pouvez interagir avec elle :
89
 
90
  * **Documentation Interactive (Swagger UI) :** [http://127.0.0.1:8000/docs](http://127.0.0.1:8000/docs)
 
91
  * **Health Check :** `GET /`
92
  * **Prédiction Unique :** `POST /predict`
93
  * **Prédiction en Masse :** `POST /predict_bulk`
94
 
95
- ## ☁️ Déploiement
96
-
97
- Cette application est conçue pour être déployée sur [Hugging Face Spaces](https://huggingface.co/spaces) en utilisant le `Dockerfile` fourni.
98
-
99
- ## 💡 Améliorations Futures
100
 
101
- * Intégration d'une base de données PostgreSQL.
102
- * Mise en place d'un monitoring du modèle.
103
- * Création d'une interface utilisateur simple.
104
- * Ajout de tests unitaires et d'intégration.
105
 
106
- ---
 
 
 
10
 
11
  # Projet : Prédiction de l'Attrition des Employés et API
12
 
13
+ Ce projet a pour objectif d'analyser les données RH afin de construire un modèle de Machine Learning capable de prédire le départ volontaire (attrition) des employés. Le modèle est ensuite exposé via une API RESTful construite avec FastAPI, prête à être déployée, et les interactions avec l'API sont enregistrées dans une base de données PostgreSQL.
14
 
15
  ## 🎯 Objectifs
16
 
17
  * **Analyser** les facteurs clés influençant l'attrition des employés.
18
  * **Construire et Entraîner** un modèle de classification binaire performant.
19
  * **Développer une API** pour obtenir des prédictions en temps réel pour un ou plusieurs employés.
20
+ * **Intégrer une base de données PostgreSQL** pour la gestion des données d'entraînement et l'enregistrement des prédictions de l'API.
21
+ * **Conteneuriser** l'application avec Docker pour un déploiement facile de l'API.
22
  * **Déployer** l'API sur Hugging Face Spaces.
 
23
 
24
  ## 🛠️ Technologies Utilisées
25
 
26
  * **Langage :** Python 3.12
27
  * **Analyse & ML :** Pandas, NumPy, Scikit-learn, Joblib
28
  * **API :** FastAPI, Uvicorn, Pydantic
29
+ * **Base de Données :** PostgreSQL, SQLAlchemy
30
  * **Gestion de Dépendances :** Poetry
31
+ * **Conteneurisation :** Docker, Docker Compose (pour la BDD locale)
32
  * **Déploiement :** Hugging Face Spaces
33
+ * **CI/CD :** GitHub Actions
34
 
35
  ## 📂 Structure du Projet
36
 
37
  Le projet est organisé de la manière suivante :
38
+ ```
39
+ mon_projet_attrition/
40
+
41
+ ├── .github/
42
+ │ └── workflows/
43
+ │ └── ci.yml # Workflow d'Intégration Continue
44
+ ├── .gitignore
45
+ ├── README.md # Ce fichier
46
+ ├── pyproject.toml # Dépendances et configuration Poetry
47
+ ├── poetry.lock
48
+ ├── requirements.txt # Export pour Docker/HF
49
+ ├── Dockerfile # Fichier de build Docker pour l'API
50
+ ├── docker-compose.yml # Pour lancer PostgreSQL localement
51
+ ├── .env.example # Fichier d'exemple pour les variables d'environnement
52
+
53
+ ├── data/
54
+ │ └── raw/ # Données brutes CSV (source initiale)
55
+
56
+ ├── notebooks/ # Notebooks d'exploration et de tests initiaux
57
+
58
+ ├── src/
59
+ │ ├── init.py
60
+ │ ├── api/ # Code de l'API FastAPI (main.py, schemas.py)
61
+ │ ├── config.py # Configurations globales (chemins, params, mappings)
62
+ │ ├── data_processing/ # Modules de chargement et preprocessing
63
+ │ ├── database/ # Modules liés à la base de données (setup, models, init_db)
64
+ │ └── modeling/ # Modules d'entraînement et prédiction du modèle
65
+
66
+ ├── models/ # Modèles ML entraînés (ex: .joblib)
67
+
68
+ ├── scripts/ # Scripts utilitaires (ex: peuplement de la BDD)
69
+ │ └── populate_employees_table.py
70
+
71
+ └── tests/
72
+ ├── unit/ # Tests unitaires
73
+ └── functional/ # Tests fonctionnels/API
74
+ ```
75
 
76
+ ## 🚀 Installation et Configuration Locale
 
 
 
 
 
 
 
 
 
 
77
 
78
  **Prérequis :**
79
 
80
  * [Git](https://git-scm.com/)
81
  * [Python 3.12+](https://www.python.org/)
82
+ * [Poetry](https://python-poetry.org/docs/#installation) (pour la gestion des dépendances Python)
83
+ * [Docker Desktop](https://www.docker.com/products/docker-desktop/) (ou Docker Engine + Docker Compose séparément sur Linux) pour la base de données PostgreSQL.
84
 
85
  **Étapes :**
86
 
 
89
  git clone [URL_DE_VOTRE_REPO_GITHUB]
90
  cd mon_projet_attrition
91
  ```
92
+
93
+ 2. **Installez les dépendances Python avec Poetry :**
94
  ```bash
95
  poetry install
96
  ```
97
+ *(Cela créera un environnement virtuel et installera toutes les dépendances listées dans `pyproject.toml`)*.
98
+
99
+ 3. **Configurez les Variables d'Environnement pour la Base de Données :**
100
+ * Copiez le fichier d'exemple `.env.example` en `.env` :
101
+ ```bash
102
+ cp .env.example .env
103
+ ```
104
+ * Modifiez le fichier `.env` avec vos propres identifiants pour la base de données locale. Ce fichier est ignoré par Git.
105
+ ```env
106
+ # .env - VOS SECRETS LOCAUX
107
+ POSTGRES_USER=votre_user_pg
108
+ POSTGRES_PASSWORD=votre_mot_de_passe_pg_solide
109
+ POSTGRES_DB=attrition_db_dev
110
+ DB_HOST_PORT=5432
111
+ ```
112
+
113
+ 4. **Démarrez le Service PostgreSQL avec Docker Compose :**
114
+ Assurez-vous que Docker Desktop est en cours d'exécution.
115
+ ```bash
116
+ docker-compose up -d
117
+ ```
118
+ * Pour arrêter le service : `docker-compose down`
119
+ * Pour voir les logs de la base de données : `docker-compose logs db`
120
+
121
+ 5. **Initialisez la Base de Données (Création des Tables) :**
122
+ Activez d'abord l'environnement Poetry si ce n'est pas déjà fait (`poetry shell`).
123
+ ```bash
124
+ poetry run python -m src.database.init_db
125
+ ```
126
+
127
+ 6. **Peuplez la Table `employees` (Données Initiales) :**
128
+ Ce script charge les données des CSV, les nettoie et les insère dans la table `employees`.
129
+ ```bash
130
+ poetry run python -m scripts.populate_employees_table
131
+ ```
132
+
133
+ 7. **Activez l'Environnement Virtuel Poetry (si pas déjà fait) :**
134
  ```bash
135
  poetry shell
136
  ```
137
+ *(Votre terminal est maintenant configuré pour utiliser l'interpréteur Python et les librairies de cet environnement).*
138
 
139
  ## 📈 Usage
140
 
141
+ *(Assurez-vous d'être dans l'environnement Poetry : `poetry shell`, et que votre base de données PostgreSQL Docker est démarrée).*
142
 
143
+ 1. **Entraîner le modèle :**
144
+ Le modèle sera entraîné en utilisant les données de la table `employees` de votre base PostgreSQL.
145
  ```bash
146
  python -m src.modeling.train_model
147
  ```
148
+ *(Le modèle entraîné est sauvegardé dans `models/`)*.
149
+
150
+ 2. **Lancer l'API FastAPI :**
151
  ```bash
152
  uvicorn src.api.main:app --reload
153
  ```
154
+ *(Le serveur démarrera sur `http://127.0.0.1:8000`. `--reload` permet le redémarrage automatique lors de modifications).*
155
 
156
  ## 🔌 API Endpoints
157
 
158
+ Une fois l'API lancée :
159
 
160
  * **Documentation Interactive (Swagger UI) :** [http://127.0.0.1:8000/docs](http://127.0.0.1:8000/docs)
161
+ * Explorez et testez les endpoints ici.
162
  * **Health Check :** `GET /`
163
  * **Prédiction Unique :** `POST /predict`
164
  * **Prédiction en Masse :** `POST /predict_bulk`
165
 
166
+ Les appels à `/predict` et `/predict_bulk` sont enregistrés dans la table `api_prediction_logs` de la base de données PostgreSQL.
 
 
 
 
167
 
168
+ ## Tests
 
 
 
169
 
170
+ Pour lancer la suite de tests (unitaires et fonctionnels) :
171
+ ```bash
172
+ poetry run pytest