【问题标题】:Weather forecast using a neural network使用神经网络的天气预报
【发布时间】:2011-01-14 03:20:49
【问题描述】:

我正在尝试使用backpropagation 编写一个天气预报程序。我是这个领域的初学者。我有不同参数的历史数据,如温度、湿度、风速、降雨量等。

我对如何将这些数据提供给输入层感到困惑。是否要为每个输入节点提供给定日期的全部数据,或者我是否需要为每个参数设置不同的网络?我也对输出层感到困惑。

【问题讨论】:

    标签: neural-network prediction backpropagation


    【解决方案1】:

    在输入层中,输入数据的每个维度(天气、风等)都有 X 个单独的节点,其中 X 是要回顾的天数(比如说 4-7)。然后你应该在一个合适的范围内标准化每个输入维度,比如说 [-1.0, 1.0]。

    让第二个“隐藏”层与第一层完全互连(并且还有一个固定 1.0 输入“偏置”节点作为固定点)。这里的节点应该比输入层少,但这只是经验法则,您可能需要进行实验。

    最后一层是与第二层完全互连的输出层(也有偏差)。每个维度都有一个单独的输出神经元。

    不要忘记使用输入和输出的标准化值进行训练。由于这是一个时间序列,您可能不需要随机化训练数据的顺序,而是及时提供它们 - 您的网络也会学习时间关系(运气好 :)

    (另请注意,有一种称为“时间反向传播”的方法针对时间序列数据进行了调整。)

    【讨论】:

    • 假设包含的相关变量越多越准确是否正确?即使用{Temp, Pressure, Humidity},优于{Rainfall, Windspeed, UV Index}?
    • @Aaron:使用更多相关的变量总是更好,但是如果有很强的关系,网络也可以使用其他变量来学习。另请注意,为了更好地研究网络,可能需要转换一些数据(例如对数尺度等)。
    【解决方案2】:

    在我看来,决策树可能是比神经网络更好的解决方案。 Here 是对决策树如何工作的描述。此外,还有一些软件可以实现各种分类器,包括神经网络。我与Weka 合作过,效果很好。还有一些库可用于将 Weka 的功能与 Java 和 C# 等编程语言结合使用。如果您决定使用 Weka,请确保您熟悉 here 中描述的 .arff 格式。

    【讨论】:

    • 如果您对使用 Weka 感兴趣,一个选择可能是尝试 Knime,这是一个基于 Eclipse 的工作流包,其中包含 Weka 原语。
    • 我很好奇你会如何将决策树应用到这个问题上。
    【解决方案3】:

    我已经使用(并拥有)这本书:Introduction to Neural Networks with Java

    我发现它是一个有用的参考。它涵盖了相当多的 NN 主题,包括反向传播。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-02
      相关资源
      最近更新 更多