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
- R² : ~0,77
Ces scores montrent que le modèle capture correctement les tendances globales avec une erreur moyenne proche d’1–2 minutes.