Skip to content

Model Pipeline Overview

Model Pipeline

The ModelPipeline class trains and evaluates forecasting models with rolling-window validation.

Basic Usage

from epftoolbox2.pipelines import ModelPipeline
from epftoolbox2.models import OLSModel, LassoCVModel
from epftoolbox2.evaluators import MAEEvaluator
from epftoolbox2.exporters import ExcelExporter, TerminalExporter
pipeline = (
ModelPipeline()
.add_model(OLSModel(predictors=predictors, name="OLS"))
.add_model(LassoCVModel(predictors=predictors, name="LassoCV"))
.add_evaluator(MAEEvaluator())
.add_exporter(TerminalExporter())
.add_exporter(ExcelExporter("results.xlsx"))
)
report = pipeline.run(
data=df,
test_start="2024-02-01",
test_end="2024-03-01",
target="price",
horizon=7,
save_dir="results",
)

Pipeline Components

Models

Evaluators

Exporters


Predictor Specification

Predictors can be specified in four ways:

predictors = [
"load_actual",
"is_monday_d+{horizon}",
"is_tuesday_d+{horizon}",
"is_wednesday_d+{horizon}",
"is_thursday_d+{horizon}",
"is_friday_d+{horizon}",
"is_saturday_d+{horizon}",
"is_sunday_d+{horizon}",
"is_holiday_d+{horizon}",
"daylight_hours_d+{horizon}",
]

Feature Scaling

Models automatically apply StandardScaler:

  1. Numeric features are standardized (mean=0, std=1)

  2. Binary features (0/1) are auto-detected and skipped

  3. Target variable is scaled, predictions are inverse-scaled


Run Parameters

ParameterTypeDefaultDescription
dataDataFrameRequiredInput data with DatetimeIndex
test_startstrRequiredTest period start
test_endstrRequiredTest period end
targetstr"price"Target column name
horizonint7Max forecast horizon (days)
save_dirstrNoneDirectory for incremental results

EvaluationReport

The pipeline returns an EvaluationReport:

report.summary() # Overall metrics
report.by_hour() # Breakdown by hour
report.by_horizon() # Breakdown by horizon
report.by_hour_horizon() # Combined breakdown

Learn More