Giter Site home page Giter Site logo

leo-rain / lstm-load-forecasting Goto Github PK

View Code? Open in Web Editor NEW

This project forked from dafrie/lstm-load-forecasting

0.0 1.0 0.0 1.7 GB

Electricity load forecasting with LSTM (Recurrent Neural Network)

License: MIT License

Jupyter Notebook 8.70% Python 0.91% HTML 90.39%

lstm-load-forecasting's Introduction

Electricity load forecasting with LSTM

Demo project for electricity load forecasting with a LSTM (abbr. "Long Term Short Term Memory", a Recurrent Neural Network) with data for Switzerland.

Getting started

It is recommended to use a Python and R packages and environment management tool like Anaconda. This will install also already most of the packages used in this project and will allow to run the notebooks in ./notebooks/ with the Jupyter Notebook server.

Main packages used

* [Keras 2.0.2](https://github.com/fchollet/keras) - High-level Neural Network API used for LSTM modelling. Backend used was TensorFlow.
* [forecast 8.0](https://cran.r-project.org/web/packages/forecast/index.html) - Forecasting package for R used for TBATS and ARIMA benchmark forecasts. 

Data:

  • Hourly series for actual load and forecasted load. Source: ENTSO-E API
  • Hourly series for temperature (in °F) and a mapping of the qualitative weather in one of the 3 categories defined in the configuration file. These historical observations are collected for the major cities in Switzerland. Source: Dark Sky API
  • Calendar dummy variables. Holidays, month, day of week, hour of day.
  • In total: 20756x78 observations

File structure:

.
├── data                        # Load, calendar and weather data
├── lstm_load_forecasting       # Helper functions for data preparation and LSTM model building
├── models                      # All trained models saved in HDF5 file format
├── notebooks                   # LSTM Model selection and forecast comparison
├── results                     # Results and parameters from model training run comparison
├── config.json                 # Config file with API Keys, Weather stations, holiday calendar.  
├── LICENSE
└── README.md

Notebooks

Different "categories" (named data modules in the data helper functions...) of models have been defined and then for each category, a number of models based on possible parameter combinations have been estimated:

  • Model 1: Using only the ENTSO-E forecast as input.
  • Model 2: Using only the calendar dummy variables as input.
  • Model 3: Using only the weather data as input.
  • Model 4: Using ENTSO-E and calendar data as input.
  • Model 5: Using weather data and calendar dummies as input.
  • Model 6: Using ENTSO-E, calendar and weather as input.

The LSTM model results notebook then combines all results. The best models models in category 4, 5 and 6 then are compared in the Forecast Comparison notebook with a TBATS and a ARIMA model forecasts that have been generated in the respective R notebooks. The comparison then is further extended with rolling window (static, using at each time step the newly available data) in the Rolling Forecast notebook.

Acknowledgments and References

lstm-load-forecasting's People

Contributors

dafrie avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.