Notes and exercises for learning design patterns
Build an adapter that creates derived objects.
The source object is a long temperature series:
TemperatureSeries(
sensor_id="greenhouse-1",
version=1,
values=(20.0, 21.0, 22.0, 23.0, 24.0),
)
The client code wants training windows:
TrainingWindow(
sensor_id="greenhouse-1",
features=(20.0, 21.0, 22.0),
target=23.0,
)
One series should become many windows.
The forecasting team wants to train a model that predicts the next temperature reading.
The raw data is stored as one long series. The model code, however, wants many small examples:
previous readings -> next reading
So you will create an adapter that exposes a time series as an iterable of TrainingWindow objects.
Open exercise3.py and implement SeriesToWindowAdapter.
The adapter should:
TemperatureSeries,window_size,horizon with default value 1,window_size > 0,horizon > 0,TrainingWindow objects,__iter__,__len__.For this series:
values = (20.0, 21.0, 22.0, 23.0, 24.0)
With window_size=3 and horizon=1, generate:
features=(20.0, 21.0, 22.0), target=23.0
features=(21.0, 22.0, 23.0), target=24.0
With window_size=2 and horizon=2, generate:
features=(20.0, 21.0), target=23.0
features=(21.0, 22.0), target=24.0
The target index is:
start + window_size + horizon - 1
python exercise3.py