120 практических задач. Джейд Картер. Читать онлайн. Newlib. NEWLIB.NET

Автор: Джейд Картер
Издательство: Автор
Серия:
Жанр произведения:
Год издания: 2024
isbn:
Скачать книгу
align="center">

      5. Построение простой рекуррентной нейронной сети для анализа временных рядов

      – Задача: Прогнозирование цен на акции.

      Для построения простой рекуррентной нейронной сети (RNN) для анализа временных рядов и прогнозирования цен на акции можно использовать библиотеку TensorFlow и её высокоуровневый интерфейс Keras. В этом примере мы рассмотрим, как использовать LSTM (Long Short-Term Memory) слои, которые являются разновидностью RNN, чтобы построить модель для прогнозирования цен на акции.

      Шаги:

      1. Импорт библиотек и модулей.

      2. Подготовка данных.

      3. Построение модели RNN.

      4. Компиляция и обучение модели.

      5. Оценка и тестирование модели.

      Пример кода:

      ```python

      import numpy as np

      import pandas as pd

      import tensorflow as tf

      from tensorflow.keras import layers, models

      from sklearn.preprocessing import MinMaxScaler

      from sklearn.model_selection import train_test_split

      import matplotlib.pyplot as plt

      # Шаг 1: Импорт библиотек

      import numpy as np

      import pandas as pd

      import tensorflow as tf

      from tensorflow.keras import layers, models

      from sklearn.preprocessing import MinMaxScaler

      from sklearn.model_selection import train_test_split

      import matplotlib.pyplot as plt

      # Шаг 2: Подготовка данных

      # Загрузка данных. Предположим, что у нас есть CSV файл с историческими ценами на акции.

      data = pd.read_csv('stock_prices.csv')

      # Выбираем интересующие нас столбцы, например, 'Close'

      prices = data['Close'].values.reshape(-1, 1)

      # Нормализация данных

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

      scaled_prices = scaler.fit_transform(prices)

      # Создание последовательностей для обучения модели

      def create_sequences(data, sequence_length):

      sequences = []

      targets = []

      for i in range(len(data) – sequence_length):

      sequences.append(data[i:i + sequence_length])

      targets.append(data[i + sequence_length])

      return np.array(sequences), np.array(targets)

      sequence_length = 60 # 60 дней

      X, y = create_sequences(scaled_prices, sequence_length)

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

      X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, shuffle=False)

      # Шаг 3: Построение модели RNN

      model = models.Sequential()

      model.add(layers.LSTM(50, return_sequences=True, input_shape=(sequence_length, 1)))

      model.add(layers.LSTM(50, return_sequences=False))

      model.add(layers.Dense(25))

      model.add(layers.Dense(1))

      # Шаг 4: Компиляция и обучение модели

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

      history = model.fit(X_train, y_train, batch_size=32, epochs=10,

      validation_data=(X_test, y_test))

      # Шаг 5: Оценка модели

      predictions = model.predict(X_test)

      predictions = scaler.inverse_transform(predictions)

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

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

      plt.plot(data.index[:len(data) – len(y_test)], scaler.inverse_transform(scaled_prices[:len(scaled_prices) – len(y_test)]), color='blue', label='Исторические данные')

      plt.plot(data.index[len(data) – len(y_test):], scaler.inverse_transform(scaled_prices[len(scaled_prices) – len(y_test):]), color='orange', label='Истинные значения')

      plt.plot(data.index[len(data) – len(y_test):], predictions, color='red', label='Прогнозы')

      plt.xlabel('Дата')

      plt.ylabel('Цена акции')

      plt.legend()

      plt.show()

      ```

      Пояснение:

      1. Импорт библиотек: Импортируются необходимые библиотеки, включая TensorFlow, Keras, pandas и matplotlib.

      2. Подготовка данных: Загружаются данные о ценах акций из CSV файла и нормализуются с помощью MinMaxScaler. Создаются последовательности для обучения модели.

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

      4.