data.demo_data

data.demo_data

Demo dataset configuration for safety-critical forecasting tasks.

This module provides a flexible configuration dataclass for managing parameters in demonstration and production forecasting workflows.

Classes

Name Description
DemoConfig Configuration for the safety-critical demo task.

DemoConfig

data.demo_data.DemoConfig(
    data_path=(lambda: get_package_data_home() / 'demo11.csv')(),
    model_root=(lambda: Path.home() / 'spotforecast2_safe_models')(),
    log_root=(lambda: Path.home() / 'spotforecast2_safe_models' / 'logs')(),
    forecast_horizon=24,
    contamination=0.01,
    window_size=72,
    lags=24,
    train_ratio=0.8,
    random_seed=42,
    weights=(lambda: [1.0, 1.0, -1.0, -1.0, 1.0, -1.0, 1.0, 1.0, 1.0, -1.0, 1.0])(),
)

Configuration for the safety-critical demo task.

This immutable dataclass encapsulates all parameters needed for forecasting demonstrations, including data paths, model directories, and hyperparameters. All fields have sensible defaults but can be overridden during initialization.

Attributes

Name Type Description
data_path Path Path to the ground truth CSV file for testing.
model_root Path Root directory for storing trained models.
log_root Path Directory for storing log files.
forecast_horizon int Number of time steps to forecast ahead.
contamination float Contamination factor for outlier detection (0.0-1.0).
window_size int Size of the sliding window for feature extraction.
lags int Number of lagged features to include.
train_ratio float Ratio of data used for training (0.0-1.0).
random_seed int Random seed for reproducibility.
weights List[float] Weights for aggregating multi-variable predictions.

Examples

Default configuration:

from spotforecast2_safe.data.demo_data import DemoConfig

config = DemoConfig()
print(f"Forecast horizon: {config.forecast_horizon}")
print(f"Window size: {config.window_size}")
print(f"Random seed: {config.random_seed}")
Forecast horizon: 24
Window size: 72
Random seed: 42

Override specific parameters:

config = DemoConfig(forecast_horizon=48, contamination=0.05, random_seed=123)
print(f"Forecast horizon: {config.forecast_horizon}")
print(f"Contamination: {config.contamination}")
Forecast horizon: 48
Contamination: 0.05

Customize paths for a specific environment:

import tempfile
from pathlib import Path

with tempfile.TemporaryDirectory() as tmpdir:
    custom_config = DemoConfig(
        data_path=Path(tmpdir) / "my_data.csv",
        model_root=Path(tmpdir) / "models",
        log_root=Path(tmpdir) / "logs",
    )
    print(f"Data path name: {custom_config.data_path.name}")
    print(f"Model root name: {custom_config.model_root.name}")
Data path name: my_data.csv
Model root name: models

Custom weights for multi-variable aggregation:

config = DemoConfig(weights=[1.0, 1.0, -1.0, 1.0, 1.0])
print(f"Number of weights: {len(config.weights)}")
Number of weights: 5

Immutability check (frozen dataclass):

config = DemoConfig()
try:
    config.forecast_horizon = 100
except AttributeError:
    print("Config is immutable as expected")
Config is immutable as expected

Production configuration with a long horizon:

prod_config = DemoConfig(
    forecast_horizon=168,  # 1 week
    window_size=336,       # 2 weeks
    lags=48,
    train_ratio=0.9,
    contamination=0.005,
)
print(f"Production horizon: {prod_config.forecast_horizon} hours")
print(f"Training ratio: {prod_config.train_ratio}")
Production horizon: 168 hours
Training ratio: 0.9