2010-02-07 2 views
11

Я пытаюсь написать программу для прогнозирования погоды, используя backpropagation. Я новичок в этой области. У меня есть исторические данные с различными параметрами, такими как температура, влажность, скорость ветра, осадки и т. Д.Прогноз погоды с использованием нейронной сети

Я смущен о том, как предоставить эти данные входному слою. Каждому входному узлу присваиваются все данные за данный день или мне нужна другая сеть для каждого параметра? Я также смущен о выходном слое.

ответ

1

Мне кажется, что деревья решений могут быть лучшим решением этой проблемы, чем нейронные сети. Here - это описание того, как работают деревья решений. Кроме того, имеется доступное программное обеспечение, которое реализует различные классификаторы, включая нейронные сети. Я работал с Weka, и он работает очень хорошо. Существуют также библиотеки, которые можно использовать для использования функциональности Weka с такими языками программирования, как Java и C#. Если вы решите работать с Weka, убедитесь, что вы знакомы с форматом .arff, описанным here.

+0

Если вы заинтересованы в использовании Weka, одним из вариантов может быть попытка опробовать Knime, пакет рабочего процесса на основе eclipse, который включает в себя примитивы Weka. –

+0

Мне любопытно, как вы примените деревья решений к этой проблеме. – brian

+0

Случайные леса - забава – ron

2

На входном слое есть X отдельных узлов для каждого измерения (погода, ветер и т. Д.) Входных данных, где X - количество дней, чтобы оглянуться назад (скажем, 4-7). Затем вы должны нормализовать каждое измерение ввода в подходящем диапазоне, скажем, [-1.0, 1.0].

У вас есть второй «скрытый» слой, полностью связанный с первым слоем (а также с фиксированным входом 1.0 «смещение», чтобы служить точкой исправления). Здесь должно быть меньше узлов, чем во входном, но это просто эмпирическое правило, вам может потребоваться поэкспериментировать.

Последний слой - это ваш выходной слой, полностью связанный со вторым слоем (а также падение смещения). Имейте отдельный выходной нейрон для каждого измерения.

Не забывайте тренироваться с нормализованными значениями как на входе, так и на выходе. Поскольку это временный ряд, вам может не понадобиться рандомизировать порядок обучения данных, но кормить их по мере их поступления - ваша сеть также будет изучать временные отношения (с удачей :)

(Также обратите внимание, что существует метод, называемый «временной обратного распространения», который настраивается для данных временных рядов)

+0

Правильно ли предположить, что более связанные переменные включали более точную? т.е. с использованием {Temp, Pressure, Humidity}, лучше {Rainfall, Windspeed, UV Index}? –

+0

@Aaron: всегда лучше использовать более связанные переменные, однако, если есть сильное отношение, сеть может также изучить другие переменные. Также обратите внимание, что может потребоваться преобразование некоторых данных (например, в лог-масштаб и т. Д.), Чтобы сеть лучше училась. – ron

1

Я использовал (и собственную) книгу:. Introduction to Neural Networks with Java

Я нашел его полезным справочным. Он охватывает довольно широкий спектр тем NN, включая backpropogation.

Смежные вопросы