Giter VIP home page Giter VIP logo

jofaval / melbourne-temperature-timeseries Goto Github PK

View Code? Open in Web Editor NEW
0.0 2.0 0.0 1.49 MB

Timeseries Data Analysis and Forecasting of the daily min temperature in Melbourne from 1981 to 1990

Home Page: https://colab.research.google.com/github/jofaval/melbourne-temperature-timeseries/blob/master/notebook.ipynb

License: GNU General Public License v3.0

Jupyter Notebook 100.00%
data-analysis data-science data-visualization deep-learning google-colab python temperature tensorflow timeseries timeseries-analysis melbourne

melbourne-temperature-timeseries's Introduction

Daily Min Temperature in Melbourne, Australia

Open In Colab

Table of contents

  1. ๐Ÿ“ Data
  2. ๐Ÿ““ Description
  3. โœ”๏ธ Objective
  4. ๐Ÿงฑ Tech stack
  5. ๐Ÿ’น Algorithms
  6. ๐Ÿ“Š Visualization
  7. ๐Ÿค“ Conclusions
  8. ยฉ๏ธ Credits

๐Ÿ“ Data

โ†‘ Back to the table

The data is available at the following link (not the official one, nor that I could find one):
https://raw.githubusercontent.com/jbrownlee/Datasets/master/daily-min-temperatures.csv

๐Ÿ““ Description

โ†‘ Back to the table

An optional exercise about timeseries that we were assigned in the Artificial Intelligence and Big Data degree. Melbourne, Australia. The source of the data was created by Australian Bureau of meteorology over a ten year span (1981 - 1990).

Not many info is out there about this specific dataset, not that I could find without going too deep, I did not find a paper, maybe there's only the dataset to it, which, for this (small) project, is more than enough.

โœ”๏ธ Objectives

โ†‘ Back to the table

  1. Single step model, where from the temperature of the last seven days we are able to estimate the temperature of the next day.
  2. Multi step model, where from the temperature of the last 28 days, we estimate the temperature of the next seven days.
  3. Use a Recurrent Neural Network that uses Long Short-Term Memory.
  4. Convert the date to a unique pair of attributes (it's sine and cosine).

๐Ÿงฑ Tech stack

โ†‘ Back to the table

Python, that's it! R is a programming language that, as for the moment being, I have no experience with, even though it's powerful and broadly used, but I'd dare to say that no more than Python.

And one of the strongest points, if not the most, about Python, are it's libraries, so... the libraries I've used are:

  • Pandas, data manipulation with an ease of use and exploration data analysis.
  • Numpy, a really strong linear algebra library, used in the project for it's statistics utilities, SciPy may be an alternative, but I have no experience at all with it.
  • Matplotlib and Seaborn, both fantastic libraries for data visualization, and they complement each other.
  • Scikit-Learn, the library used for Machine Learning and statistics models: Linear Regression, SVR, Lasso, Ridge, etc.
  • Tensorflow and Keras, the industry standard for Deep Learning, the way to go, not really, it's just that for now I don't have that many experience with PyTorch

๐Ÿ’น Algorithms

โ†‘ Back to the table

This was solved by using deep learning neural networks based on Tensorflow and keras. I did try it out with Facebook's prophet (as per recomendation of trying it out of our professor Sergio Vivo), I may upload it as a different project, or maybe on this one, who knows.

  • Dense Neural Network, it's one of the most "basic" neural networks, it's a sequential neural network that using two hidden layers to predict the outcome.
  • Single-shot Neural Network, it's the most simple architecture, there's no hidden layers, as soon as data is inputted it tries to solve it.
  • RNN LSTM, this is a more advanced type of neural networks that "feeds" on itself, it's based on the concept of short-term memory, but prolonged to the whole fitting process, so that previous outcomes influence the present.

๐Ÿ“Š Visualization

โ†‘ Back to the table

Lineplots and scatterplots, my main focus for the visualizations (there's not that many) was to try and detect any sort of cyclic pattern (as we were told to do so in timeseries projects) and to evaluate that the operations were done correctly.

There's also the date visualization to check that the cycles are complete and there's no gap to fill in (which could be hotfixed but would be a problem, or render the whole project nearly impossible, luckily, it didn't).

๐Ÿค“ Conclusions

โ†‘ Back to the table

Having a consistent dataset (daily without a miss) for 10 straight years is a great starting point, but it's just that, a starting point, without any other feature that could contribute to the temperature prediction it becomes really hard to actually get accurate predictions, even more for a whole straight week.

I'd guess that if we had hour, or even minute detail, it may be more precise, but I can't tell for certain.

And timeseries are really hard as a starting point, not because of the theory, but to actually apply it properly, and get decent results at it.

ยฉ๏ธ Credits

โ†‘ Back to the table

First of all, to Australian Bureau of meteorology for the actual dataset.

Then to Jason Brownlee the author of the incredible Machine Learning Mastery.

And finally, to Sergio Vivo for the exercise and comprehensive explanation of timeseries and neural networks in Tensorflow.

melbourne-temperature-timeseries's People

Contributors

jofaval avatar

Watchers

 avatar  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.