Préparer les données de Network_logs.csv pour un modèle de détection d'intrusion binaire (0 = normal, 1 = suspect), en remplaçant les adresses IP par des codes pays via la base dbip-country-lite-2026-01.csv.
#Technologies utilisées :
- MinIO : stockage S3 local (simule Amazon S3)
- PySpark : traitement distribué des données
- Docker Compose : orchestration de l’environnement
Pour la détection d’intrusion, un modèle de Random Forest est recommandé car :
- Il gère bien les données tabulaires avec des features mixtes (catégorielles + numériques)
- Il est robuste au bruit et aux valeurs aberrantes
- Il fournit une bonne interprétabilité (importance des features)
- Il fonctionne bien sur des problèmes de classification binaire déséquilibrés
Les données préparées (features/) sont directement compatibles avec Scikit-learn ou Spark MLlib.
Toutes les données nécessaires sont incluses dans ce dépôt. Aucun téléchargement externe requis.
docker-compose up -d
docker exec -it bigdata-user-behavior-spark-1 apt-get update docker exec -it bigdata-user-behavior-spark-1 apt-get install -y openjdk-17-jre-headless docker exec -it bigdata-user-behavior-spark-1 pip install pyspark==3.4.1 minio boto3
docker exec -it bigdata-user-behavior-spark-1 python spark_job.py
Le script :
Crée automatiquement le bucket data-lake dans MinIO Lit intrusion-detection/Network_logs.csv Convertit les adresses IP en codes pays grâce à dbip-country-lite-2026-01.csv Sauvegarde le résultat au format Parquet dans s3a://data-lake/features/network_logs_prepared
Accéder à l’interface MinIO : http://localhost:9000 Identifiants : minioadmin / minioadmin
Le dossier features/ doit apparaître dans le bucket data-lake.
Le script explore_data.py génère deux éléments clés :
distribution_intrusion.png : histogramme montrant la répartition entre comportements normaux (0) et suspects (1) Cette visualisation confirme que le jeu de données est déséquilibré, ce qui est typique en cybersécurite