使用神经网络进行天气预报
我正在尝试使用反向传播编写天气预报程序。我是这个领域的初学者。我有不同参数的历史数据,如温度、湿度、风速、降雨量等。
我对如何将这些数据提供给输入层感到困惑。是否要为每个输入节点提供给定日期的全部数据,或者我是否需要为每个参数使用不同的网络?我也对输出层感到困惑。
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.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
在输入层中,输入数据的每个维度(天气、风等)都有 X 个单独的节点,其中 X 是要回顾的天数(假设为 4-7)。然后,您应该将每个输入维度标准化在合适的范围内,比方说 [-1.0, 1.0]。
第二个“隐藏”层与第一层完全互连(并且还具有固定 1.0 输入“偏差”节点作为固定点)。这里的节点应该比输入层中的节点少,但这只是经验法则,您可能需要进行试验。
最后一层是与第二层完全互连的输出层(并且还降低了偏差)。每个维度都有一个单独的输出神经元。
不要忘记使用输入和输出的标准化值进行训练。由于这是一个时间序列,您可能不需要随机化训练数据的顺序,而是在它们及时出现时提供它们 - 您的网络也会学习时间关系(幸运的话:)
(另请注意,有一种称为“时间反向传播”,针对时间序列数据进行调整。)
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.)
在我看来,决策树可能比神经网络更好地解决这个问题。 这里描述了决策树的工作原理。此外,还有一些软件可以实现包括神经网络在内的各种分类器。我曾与 Weka 合作过,效果非常好。您还可以使用一些库来通过 Java 和 C# 等编程语言来利用 Weka 的功能。如果您决定使用 Weka,请确保熟悉 此处。
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.
我使用过(并拥有)这本书:Introduction to Neural Networks with Java
我发现它是一个有用的参考。它涵盖了相当多的神经网络主题,包括反向传播。
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.