1xesxasfxytd Ytkoqpybvw.png

Cómo extender sus predicciones más allá del período de validación

Imagen del autor

En este artículo, lo guiaré a través del proceso de creación de modelos de series temporales utilizando TensorFlow, un poderoso marco para construir y entrenar redes neuronales. Le mostraré una variedad de arquitecturas de redes neuronales para el pronóstico de series temporales, que van desde modelos simples como SimpleRNN hasta modelos más complejos como LSTM. Además, presentaré técnicas de visualización avanzadas que he utilizado para realizar y visualizar predicciones más allá del período de validación.

He utilizado las siguientes bibliotecas: TensorFlow con Keras para construir redes neuronales, Matplotlib para visualización, NumPy para operaciones numéricas y Scikit-Learn para preprocesamiento de datos.

import numpy as np
import tensorflow as tf
from matplotlib import pyplot as plt
from sklearn.preprocessing import MinMaxScaler

La preparación de datos es fundamental para el éxito de cualquier modelo de aprendizaje automático. En esta sección, realizaré varios pasos para preparar los datos para el entrenamiento y la validación.

Separación de datos y pasos de tiempo

El primer paso es separar los pasos de tiempo de los datos reales.

Para datos de series temporales cortas (datos almacenados en una matriz): podemos crear una serie de pasos de tiempo usando ‘np.arange()’:

#For short time series data, data stored in an array, I'll do the following:
dummy_data = np.array([1, 2, 3,...])
time_step = np.arange(len(dummy_data))

Para conjuntos de datos más grandes almacenados en archivos (por ejemplo, archivos CSV): Podemos leer los datos y los pasos de tiempo correspondientes del archivo:

#For larger datasets stored in files, such as CSV files
import csv

time_step = []
data = []

with open("file.txt", "r", encoding="utf-8") as f:
csv_reader = csv.reader(f, delimiter=",")

# Skip the header
next(csv_reader)

# Skip lines with NUL characters
lines = (line for line in csv_reader if "\0" not in line)

# Iterate…