Ce projet implémente un modèle d'apprentissage automatique (Machine Learning) pour détecter les transactions frauduleuses par carte de crédit. Il utilise un classifieur de type RandomForestClassifier et traite le déséquilibre des classes à l'aide de la technique SMOTE (Synthetic Minority Over-sampling Technique).
- Description
- Structure du Projet
- Données
- Installation
- Utilisation
- Modèle et Performance
- Tests et CI/CD
- Captures d'écran
Le but de ce projet est d'identifier les transactions frauduleuses parmi un ensemble de données de transactions de cartes de crédit. Le jeu de données est fortement déséquilibré, la majorité des transactions étant légitimes.
Le pipeline comprend :
- Prétraitement des données : Mise à l'échelle robuste (
RobustScaler) des colonnesTimeetAmount. - Gestion du déséquilibre : Utilisation de SMOTE pour suréchantillonner la classe minoritaire dans l'ensemble d'entraînement.
- Entraînement : Utilisation d'un
RandomForestClassifier. - Évaluation : Mesure de la performance via la Précision, le Rappel, le F1-Score et l'AUC-ROC.
.
├── .gitlab-ci.yml # Configuration de l'intégration continue GitLab
├── detection_fraude.py # Script principal (entraînement et évaluation)
├── test_detection_fraude.py # Tests unitaires et d'intégration avec pytest
├── requirements.txt # Dépendances du projet
├── creditcard.csv # Jeu de données (téléchargé lors de l'exécution ou du CI)
├── creation_depot.png # Capture d'écran : Création du dépôt
├── integration_tests_local.png # Capture d'écran : Tests locaux
└── pipeline_succes_1.png # Capture d'écran : Succès du pipeline CI
Le fichier creditcard.csv contient des transactions effectuées par des cartes de crédit en septembre 2013 par des porteurs de cartes européens.
Structure simplifiée du fichier :
- Time : Secondes écoulées entre chaque transaction et la première transaction.
- V1-V28 : Composantes principales obtenues par PCA pour protéger la confidentialité.
- Amount : Montant de la transaction.
- Class : Variable cible (1 pour fraude, 0 sinon).
Exemple d'en-tête :
"Time","V1","V2",...,"Amount","Class"
0,-1.3598, -0.0727, ..., 149.62, "0"-
Clonez le dépôt :
git clone https://github.com/Inknyto/detection_fraude cd detection_fraude -
Installez les dépendances :
pip install -r requirements.txt
-
Téléchargez les données (si non présentes) : Le script de CI utilise
gdownpour récupérer le fichiercreditcard.csv.
Pour lancer l'entraînement et l'évaluation du modèle :
python detection_fraude.pyLe modèle est évalué sur un ensemble de test avec les métriques suivantes :
- Précision (Accuracy)
- Rappel (Recall)
- F1-Score
- AUC-ROC
Une courbe ROC est également générée pour visualiser la performance du classifieur.
Les tests sont gérés par pytest. Ils vérifient que le modèle atteint des seuils de performance minimaux :
- Accuracy >= 0.9
- Recall >= 0.8
- F1-Score >= 0.8
- AUC-ROC >= 0.9
Pour lancer les tests localement :
pytest test_detection_fraude.py -vLe projet intègre également un pipeline GitLab CI (.gitlab-ci.yml) qui automatise l'installation, le téléchargement des données et l'exécution des tests à chaque push sur la branche main.
Voici quelques illustrations du projet :


