Ce dépôt présente deux projets distincts d'apprentissage automatique démontrant l'application et l'optimisation de réseaux de neurones pour des tâches de classification sur des données tabulaires et des images.
Technologies et Bibliothèques :
- Langage : Python
- Analyse de Données : Pandas, NumPy
- Machine Learning : Scikit-Learn
- Deep Learning : TensorFlow, Keras
- Visualisation : Matplotlib
L'objectif de ce projet était de construire un modèle prédictif capable de classifier les clients en différentes catégories de revenus (faible, moyen, élevé) à partir de leurs données comportementales. Ce type de modèle est essentiel pour des applications commerciales comme le ciblage marketing ou la segmentation client.
- Prétraitement des Données : Nettoyage, gestion des valeurs manquantes et encodage des variables catégorielles (ex:
gender,country) pour préparer les données pour le modèle. - Ingénierie des Caractéristiques : Création de variables cibles pour des problèmes de classification binaire (revenu supérieur à la moyenne ou non) et multi-classes (revenu faible, moyen, élevé basé sur les quartiles).
- Entraînement du Modèle : Utilisation de la classe
MLPClassifierde Scikit-Learn pour entraîner les deux types de classifieurs. - Optimisation des Hyperparamètres : Recherche de la meilleure architecture de réseau de neurones (nombre de couches, nombre de neurones) et des meilleurs paramètres d'entraînement (fonction d'activation, solveur) à l'aide de
RandomizedSearchCVpour une optimisation efficace. - Évaluation et Analyse :
- Utilisation de la validation croisée pour garantir la robustesse du modèle.
- Analyse des performances via des métriques clés (précision, rappel, F1-score) et des matrices de confusion.
- Génération de courbes d'apprentissage pour diagnostiquer le sur-ajustement et s'assurer que le modèle généralise bien.
Le PMC optimisé a montré des performances nettement supérieures à un modèle de base (Arbre de Décision), avec une précision de 70% et un F1-score pondéré de 0.70 dans la tâche multi-classes. Contrairement à l'arbre, le PMC a réussi à prédire de manière équilibrée toutes les classes de revenus, y compris les minoritaires.
Ce projet explore la construction et la comparaison de plusieurs architectures de deep learning pour la classification d'images sur le jeu de données Fashion-MNIST. L'objectif était de comparer l'efficacité de différentes approches, de la plus simple à la plus avancée.
- Modèle de Référence (PMC) : Un Perceptron Multi-Couches de base a été implémenté avec Keras pour établir une performance de référence.
- CNN Personnalisé : Conception et entraînement d'un Réseau de Neurones à Convolution (CNN) incluant des couches de convolution, de pooling, de normalisation par lots (
BatchNormalization) et de régularisation (Dropout). - CNN avec Augmentation de Données : Pour améliorer la généralisation et réduire le sur-apprentissage, la technique d'augmentation de données a été appliquée en utilisant
ImageDataGeneratorde Keras, créant ainsi des variations synthétiques des images d'entraînement (rotations, zooms, décalages). - Apprentissage par Transfert (Transfer Learning) : Utilisation du modèle pré-entraîné VGG16 comme extracteur de caractéristiques fixes, en y ajoutant des couches denses personnalisées pour la classification finale.
| Modèle | Exactitude (Test) | Temps d'entraînement (sec) | Analyse |
|---|---|---|---|
| PMC (Keras) | 88.86% | 161 | Rapide mais moins performant que les architectures CNN. |
| CNN Personnalisé | 93.12% | 2631 | Excellent équilibre entre une haute précision et un temps d'entraînement raisonnable. |
| CNN + Augmentation | 91.37% | 2994 | A réduit le sur-apprentissage mais a légèrement diminué la précision finale. |
| VGG16 (Transfert) | 87.61% | 14458 | Le modèle le plus long à entraîner, probablement surdimensionné pour la complexité de Fashion-MNIST. |
Le CNN personnalisé s'est révélé être l'approche la plus efficace pour ce problème, offrant la meilleure précision tout en restant efficient en termes de temps de calcul.
- Python 3.8+
- Jupyter Notebook ou un IDE compatible (ex: VS Code)
- Clonez le dépôt sur votre machine locale :
git clone [URL_DU_DEPOT] cd [NOM_DU_DEPOT] - Il est recommandé de créer un environnement virtuel :
python -m venv env source env/bin/activate # Sur Windows: env\Scripts\activate
- Installez les bibliothèques nécessaires :
pip install pandas numpy scikit-learn matplotlib tensorflow
- Démarrez le serveur Jupyter :
jupyter notebook
- Ouvrez et exécutez les notebooks situés dans leurs dossiers respectifs :
Projet_1_PMC_Prediction_Revenu/ReseauxN_Partie1_PMC.ipynbProjet_2_CNN_Classification_Image/ReseauxN_Partie2_CNN.ipynb