Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Weather forecast using a neural network

I am trying to write a program for weather forecasting using backpropagation. I am a beginner in this field. I have historical data with different parameters like temperature, humidity, wind speed, rainfall etc.

I am confused about how to provide this data to the input layer. Is each input node to be given the whole of the data for a given day, or do I need to have a different network for each parameter? I am also confused about the output layer.

like image 971
amey Avatar asked Feb 07 '10 18:02

amey


People also ask

How Ann is used in weather forecasting?

As the weather data is nonlinear, Artificial Neural Network (ANN) has become an effective way of predicting weather data precisely and accurately. Neural Network is a system that can be trained with certain input and output. It creates its own structure based upon how it is trained.

Which algorithm is best for weather prediction?

The work proposes to predict a day's weather conditions. For this the previous seven days weather is taken into consideration along with fortnight weather conditions of past years.

Can AI be used in weather forecasting system?

New weather-forecasting research using AI is fast-tracking global weather predictions. The study, recently published in the Journal of Advances in Modeling Earth Systems, could help identify potential extreme weather 2–6 weeks into the future.

How does AI ml help in weather forecasting?

It's possible that machine learning models could eventually replace traditional numerical weather prediction models altogether. Instead of solving a set of complex physical equations as the models do, these systems instead would process thousands of past weather maps to learn how weather systems tend to behave.


3 Answers

In the input layer have X separate nodes for each dimension (weather, wind, etc) of input data, where X is the number of days to look back to (let's say 4-7). Then you should normalize each input dimension in a suitable range, let's say [-1.0, 1.0].

Have a second "hidden" layer fully interconnected with the first layer (and also with a fix 1.0 input "bias" node to serve as a fix point). There should be less nodes here than in the input layer, but that's just a rule of thumb, you may need to experiment.

The last layer is your output layer fully interconnected with the second layer (and also drop in a bias). Have a separate output neuron for each dimension.

Don't forget to train with the normalized values on both the input and output. Since this is a time series, you may not need to randomize the order of training data but feed them as they come in time - your net will learn the temporal relations also (with luck :)

(Also note that there is a method called "temporal backpropagation" which is tuned for time series data.)

like image 166
ron Avatar answered Sep 28 '22 10:09

ron


It seems to me, that decision trees might be a better solution to this problem than neural networks. Here is a description of how decision trees work. Also, there is software available that has implementations of various classificators including neural networks. I've worked with Weka and it works very well. There are also libraries which you can use to utilize Weka's functionality with programming languages such as Java and C#. If you do decide to work with Weka, make sure you familiarize yourself with the .arff format described here.

like image 35
brozo Avatar answered Sep 28 '22 10:09

brozo


I have used (and own) this book: Introduction to Neural Networks with Java

I found it a useful reference. It covers quite a spectrum of NN topics, including backpropogation.

like image 25
Binary Nerd Avatar answered Sep 28 '22 11:09

Binary Nerd