Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📈 Machine Learning for Time Series

From raw signals to reliable forecasts.

Python 3.9–3.13 statsmodels sktime pmdarima skforecast uv

A hands-on course that takes you from the fundamentals of time series analysis to advanced forecasting and classification techniques. No slides, no fluff. Just real data, real models, and real evaluation.


Why this course?

Most ML courses treat time series as "just another dataset". This course treats it as what it is: a fundamentally different problem that requires specialised thinking.

You will learn how to decompose temporal signals, build robust forecasting models, evaluate them properly, and go beyond prediction into classification. Each notebook builds upon the previous one, creating a coherent path from first principles to production-ready techniques.

Learning Path

┌─────────────────────────────────────────────────────────────────────────────┐
│                    Machine Learning for Time Series                         │
├────────────────┬───────────────────┬───────────────────┬────────────────────┤
│   Foundations  │  Classical Models │    Evaluation     │     Advanced       │
│                │                   │                   │                    │
│  Introduction  │  Exponential      │  Metrics &        │  Advanced          │
│  Naive Models  │  Smoothing        │  Validation       │  Forecasting       │
│  Transforms    │  ARIMA Family     │  Model            │  Time Series       │
│  Decomposition │                   │  Comparison       │  Classification    │
└────────────────┴───────────────────┴───────────────────┴────────────────────┘

Quick Start

# Clone
git clone https://github.com/vortico/ml4ts-course.git && cd ml4ts-course

# Install (using uv, recommended)
uv sync

# Launch notebooks
jupyter notebook

Alternatively, install with pip:

pip install -e .
jupyter notebook

Course Contents

The notebooks are designed to be followed in sequence, each building upon concepts from previous chapters:

# Topic Description
01 Introduction to Time Series Fundamental concepts: stationarity, autocorrelation, data structures, and visualisation techniques for temporal data
02 Naive Forecasting Models Baseline models every forecaster must beat: naive, seasonal naive, drift, and average methods
03 Basic Transformations Preprocessing for stationarity: differencing, Box-Cox transforms, and variance stabilisation
04 Decomposition Methods Extracting trend, seasonality, and residuals using classical and STL decomposition
05 Exponential Smoothing Simple (SES), Holt's linear, and Holt-Winters triple exponential smoothing with damped trends
06 Evaluating Forecasts MAE, RMSE, MAPE, MASE; cross-validation strategies for time series; model comparison frameworks
07 ARIMA Family Models AR, MA, ARMA, ARIMA, SARIMA: identification, estimation, diagnostics, and the Box-Jenkins methodology
08 Advanced Forecasting Reduction to regression, recursive vs direct strategies, ensemble methods, and feature engineering
09 Time Series Classification Distance-based, feature-based, and shapelet-based approaches to classifying temporal patterns

What's Inside

ml4ts-course/
├── notebooks/                  # Jupyter notebooks (the course)
│   ├── 01-introduction.ipynb
│   ├── 02-naive-forecasting-models.ipynb
│   ├── 03-basic-transformations.ipynb
│   ├── 04-decomposition-methods.ipynb
│   ├── 05-exponential-smoothing.ipynb
│   ├── 06-evaluating-forecasts.ipynb
│   ├── 07-arima-family.ipynb
│   ├── 08-forecasting-advanced-topics.ipynb
│   ├── 09-time-series-classification.ipynb
│   └── utils.py               # Shared helpers, custom transformers & loaders
├── data/                      # Real-world datasets (Parquet + CSV)
├── img/                       # Diagrams and figures
├── notes/                     # LaTeX course notes (PDF)
└── pyproject.toml             # Project config and dependencies

Datasets

Real-world datasets included for hands-on practice:

Dataset File(s) Domain Description
Google Stock google.parquet, GOOGL.csv Finance Historical OHLCV prices for Google/Alphabet
Australian Electricity electricity_au.parquet, electricity_au_month.parquet Energy Half-hourly and monthly electricity demand from Australia
Energy Demand energy_demand.parquet Energy Hourly energy demand patterns from Spain
Chemical Process chemical_process.parquet Industry Sensor measurements from an industrial chemical process

Tech Stack

Layer Tool Purpose
Language Python 3.9–3.13 Core language
Statistics statsmodels Classical statistical modelling (ARIMA, ETS, decomposition)
ML Toolkit sktime Unified interface for time series ML tasks
Auto ARIMA pmdarima Automatic ARIMA order selection
Forecasting skforecast Reduction-based forecasting with scikit-learn regressors
Visualisation matplotlib, seaborn Plotting and exploratory analysis
Data pyarrow Efficient columnar data storage and loading
Environment Jupyter Notebook Interactive learning and experimentation
Package Manager uv Fast, modern Python dependency management
Code Quality ruff Linting and formatting

Contributing

# 1. Clone and install
git clone https://github.com/vortico/ml4ts-course.git && cd ml4ts-course
uv sync

# 2. Make your changes in the notebooks

# 3. Submit a pull request

License

This project is maintained by Vortico for educational purposes.


Built with 🔥 by Vortico

About

Course materials for ML for Time Series, focusing on fundamentals and applications.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages