This skill provides end-to-end support for electricity load/demand forecasting projects, from data preprocessing to model deployment. It covers traditional statistical methods, modern machine learning approaches, and state-of-the-art deep learning architectures.
HorizonTypeTypical Use1-48 hoursShort-term (STLF)Grid operations, unit commitment1 week - 1 monthMedium-termMaintenance scheduling, fuel planning1-12 monthsLong-term (LTLF)Capacity planning, infrastructure investment
bash
# Run the data preparation script
python scripts/prepare_data.py --input raw_load.csv --output processed/
Required data columns:
timestamp: Datetime index (hourly or sub-hourly)load: Target variable (MW or kWh)temperature: Weather feature (°C)See references/model-selection.md for detailed guidance.
Quick recommendation:
persistence or seasonal-naiveXGBoost or LightGBM with weather featuresTemporal Fusion Transformer (TFT) or iTransformerbash
python scripts/train_model.py --model xgboost --data processed/ --horizon 24
Key metrics to track:
Load raw data with proper datetime parsing
Handle missing values: Forward-fill for short gaps, interpolate for longer
Feature engineering:
Normalization: RobustScaler or MinMaxScaler for deep learning models
See references/feature-engineering.md for complete feature list.
python
# Example training workflow
from electricity_forecasting import ForecastPipeline
pipeline = ForecastPipeline(
model_type="xgboost",
horizon=24,
lookback=168 # 1 week of history
)
pipeline.fit(train_data, val_data)
predictions, uncertainty = pipeline.predict(test_data)
metrics = pipeline.evaluate(predictions, actuals)
Use scripts/hyperparameter_search.py for automated tuning:
bash
python scripts/hyperparameter_search.py \
--model lightgbm \
--data processed/ \
--n-trials 50 \
--study-name stlf-tuning
For risk-aware decision making:
See references/uncertainty.md for implementation details.
ModelBest ForProsConsARIMAStable seriesInterpretable, fastAssumes linearitySARIMAStrong seasonalityCaptures daily/weekly patternsManual parameter tuningProphetMultiple seasonalitiesHandles holidays wellLess accurate for STLFTBATSComplex seasonalityAutomatic parameter selectionSlower training
ModelBest ForProsConsXGBoostProduction STLFFast, accurate, handles missingNo native uncertaintyLightGBMLarge datasetsFaster than XGBoost, memory efficientSensitive to hyperparametersRandom ForestBaseline MLRobust, easy to tuneLower accuracy than boostingCatBoostCategorical featuresHandles categoricals nativelySlower training
ModelBest ForProsConsLSTMSequential patternsCaptures long-term dependenciesSlow training, hard to tuneGRUSimilar to LSTMFaster convergenceSimilar limitationsTransformerLong sequencesParallel training, attentionData-hungry, complexTFTMulti-horizonInterpretable attention, uncertaintyComplex implementationN-BEATSPure deep learningStrong baseline, interpretableLess flexible than TFTiTransformerSOTA performanceInverted transformer architectureRecent, less battle-tested
See references/deep-learning-models.md for architecture details and PyTorch implementations.
Never use random k-fold! Use expanding or sliding window:
python
# Expanding window CV
from sklearn.model_selection import TimeSeriesSplit
tscv = TimeSeriesSplit(n_splits=5, test_size=168) # 1 week test
for train_idx, test_idx in tscv.split(data):
train, test = data[train_idx], data[test_idx]
# Train and evaluate
bash
python scripts/backtest.py \
--model xgboost \
--data processed/ \
--cv-splits 5 \
--horizon 24 \
--metrics mape,rmse,mae
Always compare against:
See references/deployment.md for MLOps patterns.
python
from electricity_forecasting import DeploymentModel
model = DeploymentModel.load("models/xgboost-stlf.joblib")
features = prepare_features(latest_data)
prediction = model.predict(features, return_uncertainty=True)
ScriptPurposescripts/prepare_data.pyData cleaning and feature engineeringscripts/train_model.pyModel training with validationscripts/hyperparameter_search.pyAutomated hyperparameter optimizationscripts/backtest.pyTime series cross-validationscripts/evaluate.pyComprehensive metric calculationscripts/deploy_model.pyExport model for production
bash
# Complete workflow example
# 1. Prepare data
python scripts/prepare_data.py --input data/load_2024.csv --output data/processed/
# 2. Train model
python scripts/train_model.py --model lightgbm --data data/processed/ --horizon 48
# 3. Hyperparameter tuning
python scripts/hyperparameter_search.py --model lightgbm --data data/processed/ --n-trials 100
# 4. Backtest
python scripts/backtest.py --model lightgbm-best --data data/processed/ --cv-splits 5
# 5. Deploy
python scripts/deploy_model.py --model lightgbm-best --output models/production/