Back to evidence library

11 / Independent ML engineering · 2026

Tested public repositorydata scienceml systems

Bike sharing demand without temporal leakage

Time-aware validation and a train-only calendar baseline replace a random split.

The original random split and test-set refit were removed. All preprocessing lives inside the estimator pipeline and the public metrics are explicitly limited to deterministic synthetic data.

Bike Sharing project visual

Evidence register

59.26

RMSE

Synthetic final holdout

163.49

baseline RMSE

Train-only calendar baseline

6/6

tests

Temporal and serving contracts

01 / Problem

Randomly splitting dated demand lets similar future conditions influence training and inflates confidence in deployment performance.

02 / Approach

Use expanding temporal folds, keep a final period untouched, fit every transform inside the pipeline and compare against a past-only calendar baseline.

03 / Outcome

On the 365-row synthetic holdout, Ridge reaches RMSE 59.26, MAE 49.08 and R² 0.601 versus baseline RMSE 163.49.

How the evidence is produced.

Removed leakage, built the time-aware evaluation, added a reproducible public dataset, tested API and CI.

  1. 01Synthetic dated demand → schema
  2. 02Temporal CV → pipeline selection
  3. 03Final holdout → baseline comparison
  4. 04Artifact → strict API

Validation scope

Six tests pass. The final holdout covers ordered observations 1,461–1,825 and is evaluated only after time-aware model selection.

Known limitation

The original CSV was excluded because source and licence were undocumented. Public metrics demonstrate the method, not real-city forecasting performance.

What is inspectable

  • No shuffled split.
  • Preprocessing cannot inspect the holdout.
  • Dataset provenance determines what is published.

Next proof to add

  1. 01Adopt a licensed real dataset.
  2. 02Add probabilistic intervals.
  3. 03Monitor weather and concept drift.

Main stack

PythonTimeSeriesSplitRidgeFastAPIDockerCI