120 практических задач. Джейд Картер

Читать онлайн.
Название 120 практических задач
Автор произведения Джейд Картер
Жанр
Серия
Издательство
Год выпуска 2024
isbn



Скачать книгу

Пример построения LSTM модели для прогнозирования погоды

      # Подготовка данных (вымышленный пример)

      # Загрузка и предобработка данных

      # Пример данных (вымышленный)

      # Здесь данные должны быть загружены из вашего источника данных

      # Давайте представим, что у нас есть временной ряд температур

      data = pd.DataFrame({'date': pd.date_range('2022-01-01', periods=365),

      'temperature': np.random.randn(365) * 10 + 20})

      # Масштабирование данных

      scaler = MinMaxScaler(feature_range=(0, 1))

      scaled_data = scaler.fit_transform(data['temperature'].values.reshape(-1, 1))

      # Формирование датасета для LSTM

      def create_dataset(data, look_back=1):

      X, Y = [], []

      for i in range(len(data) – look_back – 1):

      X.append(data[i:(i + look_back), 0])

      Y.append(data[i + look_back, 0])

      return np.array(X), np.array(Y)

      # Разделение данных на обучающую и тестовую выборки

      train_size = int(len(scaled_data) * 0.8)

      test_size = len(scaled_data) – train_size

      train, test = scaled_data[0:train_size], scaled_data[train_size:len(scaled_data)]

      # Создание dataset с look_back временными шагами

      look_back = 10 # количество предыдущих временных шагов для использования в качестве признаков

      X_train, Y_train = create_dataset(train, look_back)

      X_test, Y_test = create_dataset(test, look_back)

      # Изменение формы данных для LSTM [samples, time steps, features]

      X_train = np.reshape(X_train, (X_train.shape[0], X_train.shape[1], 1))

      X_test = np.reshape(X_test, (X_test.shape[0], X_test.shape[1], 1))

      # Построение LSTM модели

      model = Sequential()

      model.add(LSTM(units=50, return_sequences=True, input_shape=(X_train.shape[1], 1)))

      model.add(Dropout(0.2))

      model.add(LSTM(units=50))

      model.add(Dropout(0.2))

      model.add(Dense(units=1))

      # Компиляция модели

      model.compile(optimizer='adam', loss='mean_squared_error')

      # Обучение модели

      model.fit(X_train, Y_train, epochs=50, batch_size=32)

      # Прогнозирование на тестовых данных

      predicted_temperature = model.predict(X_test)

      # Обратное масштабирование предсказанных значений

      predicted_temperature = scaler.inverse_transform(predicted_temperature)

      # Визуализация результатов

      plt.figure(figsize=(10, 6))

      plt.plot(data['date'][train_size + look_back + 1:], test, label='Истинные значения')

      plt.plot(data['date'][train_size + look_back + 1:], predicted_temperature, label='Прогноз')

      plt.title('Прогноз температуры с использованием LSTM')

      plt.xlabel('Дата')

      plt.ylabel('Температура')

      plt.legend()

      plt.show()

      ```

      Пояснение архитектуры и процесса:

      1. Подготовка данных: В примере мы создаем вымышленные данные о температуре. Данные масштабируются с использованием `MinMaxScaler` для нормализации в диапазоне [0, 1]. Затем данные разделяются на обучающую и тестовую выборки.

      2. Формирование датасета для LSTM: Функция `create_dataset` создает датасет, разделенный на признаки (`X`) и целевую переменную (`Y`) с заданным количеством временных шагов (`look_back`).

      3. Построение LSTM модели: Модель состоит из двух слоев LSTM с уровнем отсева `Dropout` для предотвращения переобучения. Выходной слой является полносвязным слоем `Dense`, который предсказывает следующее значение температуры.

      4. Компиляция и обучение модели: Модель компилируется с оптимизатором Adam и функцией потерь `mean_squared_error` для минимизации ошибки прогнозирования.

      5. Прогнозирование и визуализация: Модель обучается на данных обучения, затем прогнозирует температуру на тестовом наборе данных. Предсказанные значения обратно масштабируются и визуализируются с истинными значениями.

      Преимущества использования LSTM для прогнозирования погоды

      – Учет временных зависимостей: LSTM способны учитывать долгосрочные зависимости в данных о погоде.

      – Обработка последовательных