{"id":48169227,"url":"https://github.com/cuicaihao/time-series-forecasting","last_synced_at":"2026-04-04T17:32:16.250Z","repository":{"id":72953297,"uuid":"269266716","full_name":"cuicaihao/time-series-forecasting","owner":"cuicaihao","description":"Forecasting time series data with MLP by Google TensorFlow. ","archived":false,"fork":false,"pushed_at":"2020-10-24T00:23:09.000Z","size":3471,"stargazers_count":3,"open_issues_count":0,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-01-29T16:07:32.649Z","etag":null,"topics":["electricity-demand-forecasting","forecasting","neural-network","series-data","tensorflow2"],"latest_commit_sha":null,"homepage":"","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cuicaihao.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2020-06-04T05:15:15.000Z","updated_at":"2023-08-17T15:44:38.000Z","dependencies_parsed_at":"2023-09-25T03:53:02.915Z","dependency_job_id":null,"html_url":"https://github.com/cuicaihao/time-series-forecasting","commit_stats":{"total_commits":3,"total_committers":1,"mean_commits":3.0,"dds":0.0,"last_synced_commit":"616c64e56e561393c4314a575b2bc6e6985fb85a"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/cuicaihao/time-series-forecasting","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cuicaihao%2Ftime-series-forecasting","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cuicaihao%2Ftime-series-forecasting/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cuicaihao%2Ftime-series-forecasting/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cuicaihao%2Ftime-series-forecasting/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cuicaihao","download_url":"https://codeload.github.com/cuicaihao/time-series-forecasting/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cuicaihao%2Ftime-series-forecasting/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31407644,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-04T10:20:44.708Z","status":"ssl_error","status_checked_at":"2026-04-04T10:20:06.846Z","response_time":60,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["electricity-demand-forecasting","forecasting","neural-network","series-data","tensorflow2"],"created_at":"2026-04-04T17:32:15.893Z","updated_at":"2026-04-04T17:32:16.150Z","avatar_url":"https://github.com/cuicaihao.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Time-Series-Forecasting\n\n## Background knowledge:\n\nAustralian Energy Market Operator (AEMO) is a not-for-profit organisation partly owned by federal and state governments, with members from electricity and gas generation, transmission, distribution, retail and resources businesses across Australia.\n\nAccording to AMEO 2019 annual report, their target is **to achieve short-term and long-term electricity demand forecast accuracy within 3% and 5% of actual peak demand**, respectively.\n\nThis repo is used this as the demo for Data Analysis and Machine Learning Task on general forecasting modelling.\n\n## Data source:\n\n![AEMO Data](./docs/AemoDataDownload.png)\n\nData Source: https://aemo.com.au/energy-systems/electricity/national-electricity-market-nem/data-nem/aggregated-data\n\nThe price and demand data sets are downloaded from 2018-01 to 2019-12 of Victoria (VIC) with the following data format.\n\n| REGION | SETTLEMENTDATE      | TOTALDEMAND | RRP   | PERIODTYPE |\n| ------ | ------------------- | ----------- | ----- | ---------- |\n| ...    | ...                 | ...         | ...   | ...        |\n| VIC1   | 2018/01/01 00:30:00 | 4251.18     | 92.46 | TRADE      |\n| VIC1   | 2018/01/01 01:00:00 | 4092.53     | 87.62 | TRADE      |\n| VIC1   | 2018/01/01 01:30:00 | 3958.95     | 73.08 | TRADE      |\n| ...    | ...                 | ...         | ...   | ...        |\n\n## Demo in Tutorial.\n\n**Objective**: built a electricity demand predictive model with AEMO data set.\n\nOnly used the historical demand record to make demand prediction in this demo, which is using the last 6 hours demand (12 records) to predict the next 0.5 hour demand (1 record), for example, use the `2018/01/01 00:30:00 - 2018/01/01 06:00:00` demand records to predict the demand at `2018/01/01 06:30:00`.\n\nMore details in the notebook.\n\n## Challenge to be solved\n\nUse the provided data to build a electricity demand predictive model with the following conditions:\n\n1. Add the `price` record (RRP) as a new input variable for the model.\n2. Document your analysis and modelling codes in jupyter notebook.\n3. Design the testing functions of your model, for example:\n\n   - data-processing function.\n   - model prediction functions.\n     - make short-term prediction: 2 hours (4 timestamps ahead).\n     - make long-term prediction: 6 hours (12 timestamps ahead).\n   - report `mean-absolute-error` and `mean-absolute-error-rate`.\n\n4. Apply cross validation method or optimization method to improve model's performance.\n5. Push your repo to your personal GitLab and then fork to Aurecon Data Science GitLab before **Wednesday morning 9:00 am AEST, 27-May-2020**.\n6. Test data for model evaluation will be released on **Wednesday morning 9:00 am AEST, 27-May-2020**.\n7. Run your pre-trained model with test data in a new jupyter notebook and push it with your results to Gitlab.\n\n## Results\n\nThe following notebooks are the solutions of this Challenge.\nIt built the MLP (Tensorflow) model on the data between 2018 and 2019 and made electricity demand prediction of the first five months of 2020.\n\nThese notebooks are designed as examples to encourage more and more people getting into data analysis and machine learning practice. They are not designed for real applications.\n\nIn the `notebooks` folder, you will find four notebooks.\n\n- [Demo (MLP.TF) 01 Build Model.ipynb]\n- [Demo (MLP.TF) 02 Apply Model.ipynb]\n- [Demo (MLP.TF) 03 Short and Long Term Prediction.ipynb]\n- [Demo (MLP.TF) 04 Short and Long Term Prediction with Price.ipynb]\n\nAll the models used a simple MLP structure: input-100-output. The following table shows the performance of the models.\n\n| MLP name           | input/hidden-node/output | Training MAE | Validation MAE | Test MAE | Training MAPE | Validation MAPE | Test MAPE |\n| ------------------ | ------------------------ | ------------ | -------------- | -------- | ------------- | --------------- | --------- |\n| Basic model        | 12-100-1                 | 58.8217      | 58.2836        | 57.6027  | 1.1927 %      | 1.2007 %        | 1.2263 %  |\n| Short-Term         | 12-100-4                 | 130.1236     | 136.7397       | 138.6194 | 2.6166 %      | 2.8024 %        | 2.9346 %  |\n| Short-Term (price) | 24-100-4                 | 128.8209     | 133.8860       | 137.3324 | 2.5915 %      | 2.7498 %        | 2.9130 %  |\n| Long-Term          | 24-100-12                | 210.7373     | 246.7550       | 258.6256 | 4.2567 %      | 5.1659 %        | 5.6055 %  |\n| Long-Term (price)  | 48-100-12                | 211.7583     | 244.6311       | 259.8957 | 4.2765 %      | 5.1094 %        | 5.6301 %  |\n\nIt is clear to see the testing MAPE of short term prediction of our basic MLP model is around 2.9 %, and the long term prediction is about 5.6 %. More conclusions can be drawn from here, but remember this is just a practice.\n\n## More reading materials\n\n- [Learning Git](https://git-scm.com/doc)\n- [Learning Pandas](https://pandas.pydata.org/pandas-docs/version/0.15/tutorials.html).\n- [Jupyter notebook](https://jupyter-notebook.readthedocs.io/en/stable/examples/Notebook/examples_index.html).\n- [scikit-learn](https://scikit-learn.org/stable/tutorial/index.html)\n- [tensorflow](https://www.tensorflow.org/tutorials)\n\n## File Structure\n\n    ├── LICENSE\n    ├── Makefile           \u003c- Makefile with commands like `make data` or `make train`\n    ├── README.md          \u003c- The top-level README for developers using this project.\n    ├── data\n    │   ├── external       \u003c- Data from third party sources.\n    │   ├── interim        \u003c- Intermediate data that has been transformed.\n    │   ├── processed      \u003c- The final, canonical data sets for modeling.\n    │   └── raw            \u003c- The original, immutable data dump.\n    │\n    ├── docs               \u003c- A default Sphinx project; see sphinx-doc.org for details\n    │\n    ├── models             \u003c- Trained and serialized models, model predictions, or model summaries\n    │\n    ├── notebooks          \u003c- Jupyter notebooks. Naming convention is a number (for ordering),\n    │                         the creator's initials, and a short `-` delimited description, e.g.\n    │                         `1.0-jqp-initial-data-exploration`.\n    │\n    ├── references         \u003c- Data dictionaries, manuals, and all other explanatory materials.\n    │\n    ├── reports            \u003c- Generated analysis as HTML, PDF, LaTeX, etc.\n    │   └── figures        \u003c- Generated graphics and figures to be used in reporting\n    │\n    ├── requirements.txt   \u003c- The requirements file for reproducing the analysis environment, e.g.\n    │                         generated with `pip freeze \u003e requirements.txt`\n    │\n    ├── setup.py           \u003c- makes project pip installable (pip install -e .) so src can be imported\n    ├── src                \u003c- Source code for use in this project.\n    │   ├── __init__.py    \u003c- Makes src a Python module\n    │   │\n    │   ├── data           \u003c- Scripts to download or generate data\n    │   │   └── make_dataset.py\n    │   │\n    │   ├── features       \u003c- Scripts to turn raw data into features for modeling\n    │   │   └── build_features.py\n    │   │\n    │   ├── models         \u003c- Scripts to train models and then use trained models to make\n    │   │   │                 predictions\n    │   │   ├── predict_model.py\n    │   │   └── train_model.py\n    │   │\n    │   └── visualization  \u003c- Scripts to create exploratory and results oriented visualizations\n    │       └── visualize.py\n    │\n    └── tox.ini            \u003c- tox file with settings for running tox; see tox.readthedocs.io\n\n\u003cp\u003e\u003csmall\u003eProject based on the \u003ca target=\"_blank\" href=\"https://drivendata.github.io/cookiecutter-data-science/\"\u003ecookiecutter data science project template\u003c/a\u003e. #cookiecutterdatascience\u003c/small\u003e\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcuicaihao%2Ftime-series-forecasting","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcuicaihao%2Ftime-series-forecasting","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcuicaihao%2Ftime-series-forecasting/lists"}