A hands-on project for forecasting time-series with PyTorch LSTMs. It creates realistic daily data (trend, seasonality, events, noise), prepares it with sliding windows, and trains an LSTM to make multi-step predictions. The project tracks errors with RMSE, MAE, MAPE and shows clear plots of training progress and forecast results.
- Synthetic daily series generation (configurable length & seed)
- Sliding-window dataset preparation for supervised learning
- LSTM model with dropout, Adam optimizer, early stopping
- Multi-step forecasting (direct & recursive)
- Metrics: RMSE, MAE, MAPE
- Visualizations: training curves & forecast plots
- Saved artifacts:
best_lstm.pt,scaler.pkl,metrics.json
- RMSE: 22.25
- MAE: 16.09
- MAPE: 7.64%
lstm-time-series-forecasting/
├─ README.md
├─ LICENSE
├─ requirements.txt
├─ data/
│ └─ generate_series.py
├─ src/
│ ├─ train_lstm.py
│ ├─ evaluate.py
│ └─ utils.py
└─ outputs/
├─ metrics.json
├─ forecast_plot.png
├─ training_curves.png
├─ best_lstm.pt
├─ scaler.pkl
└─ (auto-created figures & reports)
python -m venv .venv
# Windows:
.venv\Scripts\activate
# macOS/Linux:
source .venv/bin/activate
pip install -r requirements.txtpython data/generate_series.py --start 2020-01-01 --end 2025-12-31 --seed 42 --out data/daily_series.csvpython src/train_lstm.py --input data/daily_series.csv --horizon 30 --lookback 60 --epochs 30 --batch-size 64 --outdir outputs --seed 42python src/evaluate.py --input data/daily_series.csv --model outputs/best_lstm.pt --lookback 60 --horizon 30 --outdir outputsOutputs
outputs/metrics.json– RMSE, MAE, MAPEoutputs/training_curves.png– training & validation curvesoutputs/forecast_plot.png– forecast visualizationoutputs/best_lstm.pt– trained PyTorch modeloutputs/scaler.pkl– fitted scaler