Skip to content

IUseAMouse/Data-Lakes-Practice

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

TP 1 – Data Lakes & Data Pipelines (Pfam)

1. Objectif du TP

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.


2. Environnement de travail

Le projet utilise un pyproject.toml et le gestionnaire de paquets UV.

Installation de UV

curl -LsSf https://astral.sh/uv/install.sh | sh

Redémarrez votre terminal puis vérifiez :

uv --version

Création de l’environnement

À la racine du projet :

uv sync

Pour activer l’environnement :

source .venv/bin/activate

3. Téléchargement des données

Té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.

Installation de la CLI Kaggle

pip install kaggle

Authentification

Placez votre fichier kaggle.json dans :

~/.kaggle/kaggle.json

Téléchargement

kaggle datasets download googleai/pfam-seed-random-split

Décompressez ensuite l’archive dans :

data/bronze/

4. Ingestion des données (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.csv

Le fichier résultant doit contenir plus d’un million de lignes.


5. Analyse exploratoire

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

6. Prétraitement des données (Silver)

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.csv
  • val.csv
  • test.csv

⚠️ Attention : un split stratifié naïf ne fonctionne pas sur ce dataset. Vous devez concevoir une stratégie adaptée aux classes rares.


7. Remarques pédagogiques

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.

About

Coursework without solutions for my Datalakes & Data Integration course

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors