← Retour

NYC Taxi Data Pipeline

Data EngineeringAirflowDuckDBML

Code : Repo code


Objectif

Ce projet illustre un pipeline complet de données appliqué aux trajets NYC Yellow Taxi.
Il met en œuvre :
- ingestion des données brutes,
- création de features avec DuckDB,
- entraînement d’un modèle de Machine Learning,
- et une application Streamlit pour tester la prédiction de durée de trajet.

L’ensemble est orchestré dans Apache Airflow, et dockerisé pour être reproductible.

Dataset

  • Nom : NYC Yellow Taxi Trips
  • Période utilisée : janvier 2023 (échantillon pour test)
  • Source : NYC TLC Open Data
  • Champs utilisés : heure de pickup, coordonnées pickup/dropoff, distance, vendor, payment type, passenger count.

Architecture (vue rapide)

NYC-TAXI-PIPELINE/
├─ airflow/dags/nyc_taxi_duckdb_pipeline.py
├─ src/
  ├─ ingest.py              # download Parquet
  ├─ ingest_duckdb.py       # load → DuckDB (raw.taxi_trips)
  ├─ features_duckdb.py     # features SQL + UDF géo
  └─ train.py               # modèle ML (scikit-learn)
├─ data/                     # raw/, features/, nyc_taxi.duckdb
└─ artifacts/                # model_rf.pkl, training_metrics.json

Réalisations

  • Ingestion standardisée
  • UPSERT idempotent
  • Vues d’analyse
  • Feature engineering
  • Entraînement ML

Résultats

Évaluation sur janvier 2023 (~100k trajets, échantillonné pour l’entraînement) :

  • Modèle : Random Forest (≈300 arbres)
  • MAE : ~1,6 min
  • RMSE : ~5,5 min
  • : ~0,77

Ces scores montrent que le modèle capture correctement les tendances globales avec une erreur moyenne proche d’1–2 minutes.