Ce TP a pour but de vous faire manipuler un pipeline de données réaliste, depuis l’ingestion de données brutes jusqu’à leur préparation pour l’entraînement d’un modèle de machine learning.
Vous travaillerez sur le dataset Pfam, un jeu de données massif et fortement déséquilibré, représentatif des problématiques rencontrées en production.
Le projet utilise un pyproject.toml et le gestionnaire de paquets UV.
curl -LsSf https://astral.sh/uv/install.sh | shRedémarrez votre terminal puis vérifiez :
uv --versionÀ la racine du projet :
uv syncPour activer l’environnement :
source .venv/bin/activateTéléchargez le dataset Pfam depuis Kaggle :
https://www.kaggle.com/datasets/googleai/pfam-seed-random-split
Vous pouvez utiliser l’API Kaggle si vous le souhaitez.
pip install kagglePlacez votre fichier kaggle.json dans :
~/.kaggle/kaggle.jsonkaggle datasets download googleai/pfam-seed-random-splitDécompressez ensuite l’archive dans :
data/bronze/Combinez les fichiers CSV avec le script unpack_data.py :
python src/unpack_data.py \
--input_dir data/bronze/ \
--output_file data/bronze/combined_data.csvLe fichier résultant doit contenir plus d’un million de lignes.
Un notebook d’analyse est disponible dans :
notebooks/data_analysis.ipynb
Utilisez-le pour comprendre :
- la distribution des classes
- l’ampleur du déséquilibre
- les contraintes sur le split train/val/test
Implémentez votre stratégie de prétraitement dans src/preprocess.py, puis exécutez :
python src/preprocess.py \
--data_file data/bronze/combined_data.csv \
--output_dir data/silver/Le script doit produire :
train.csvval.csvtest.csv
Ce TP met en évidence un problème fondamental du machine learning appliqué : les hypothèses des outils standards (données équilibrées, classes suffisantes) ne tiennent pas toujours en conditions réelles.
Savoir adapter un pipeline à ces contraintes est une compétence clé en Data Engineering et ML Engineering.