Esta cuestión se puede resolver de diversas maneras, pero nosotros te compartimos la que para nosotros es la respuesta más completa.
Crea un conjunto de datos de ventanas deslizantes sobre una serie temporal proporcionada como array.
tf.keras.preprocessing.timeseries_dataset_from_array( data, targets, sequence_length, sequence_stride=1, sampling_rate=1, batch_size=128, shuffle=False, seed=None, start_index=None, end_index=None)
Esta función toma una secuencia de puntos de datos recopilados a intervalos iguales, junto con parámetros de series de tiempo como la longitud de las secuencias / ventanas, el espacio entre dos secuencias / ventanas, etc., para producir lotes de entradas y objetivos de series temporales.
Argumentos | |
---|---|
data |
Numpy array o tensor ansioso que contiene puntos de datos consecutivos (pasos de tiempo). Se espera que el eje 0 sea la dimensión de tiempo. |
targets |
Objetivos correspondientes a intervalos de tiempo en data . Debe tener la misma longitud que data . targets[i] debe ser el objetivo correspondiente a la ventana que comienza en el índice i (vea el ejemplo 2 a continuación). Pase Ninguno si no tiene datos de destino (en este caso, el conjunto de datos solo proporcionará los datos de entrada). |
sequence_length |
Longitud de las secuencias de salida (en número de pasos de tiempo). |
sequence_stride |
Periodo entre sucesivas secuencias de salida. Para zancada s , las muestras de salida comenzarían en el índice data[i] , data[i + s] , data[i + 2 * s] etc. |
sampling_rate |
Período entre pasos de tiempo individuales sucesivos dentro de secuencias. Para tasa r , pasos de tiempo data[i], data[i + r], ... data[i + sequence_length] se utilizan para crear una secuencia de muestra. |
batch_size |
Número de muestras de series temporales en cada lote (excepto quizás el último). |
shuffle |
Ya sea para mezclar muestras de salida o dibujarlas en orden cronológico. |
seed |
Int opcional; semilla aleatoria para barajar. |
start_index |
Int opcional; puntos de datos anteriores (exclusivos) que start_index no se utilizará en las secuencias de salida. Esto es útil para reservar parte de los datos para pruebas o validaciones. |
end_index |
Int opcional; puntos de datos posteriores (exclusivo) que end_index no se utilizará en las secuencias de salida. Esto es útil para reservar parte de los datos para pruebas o validaciones. |
Devoluciones | |
---|---|
Una instancia de tf.data.Dataset. Si targets se pasó, el conjunto de datos produce una tupla (batch_of_sequences, batch_of_targets) . De lo contrario, el conjunto de datos solo arroja batch_of_sequences . |
Ejemplo 1:
Considere los índices [0, 1, ... 99]
. Con sequence_length=10, sampling_rate=2, sequence_stride=3
, shuffle=False
, el conjunto de datos producirá lotes de secuencias compuestas por los siguientes índices:
First sequence:[024681012141618] Second sequence:[3579111315171921] Third sequence:[681012141618202224]... Last sequence:[78808284868890929496]
En este caso, los últimos 3 puntos de datos se descartan ya que no se puede generar una secuencia completa para incluirlos (la siguiente secuencia habría comenzado en el índice 81 y, por lo tanto, su último paso habría superado el 99).
Ejemplo 2: regresión temporal. Considere una array data
de valores escalares, de forma (steps,)
. Para generar un conjunto de datos que utilice los últimos 10 pasos de tiempo para predecir el siguiente paso de tiempo, usaría:
input_data = data[:-10] targets = data[10:] dataset = tf.keras.preprocessing.timeseries_dataset_from_array( input_data, targets, sequence_length=10)for batch in dataset: inputs, targets = batch assert np.array_equal(inputs[0], data[:10])# First sequence: steps [0-9]assert np.array_equal(targets[0], data[10])# Corresponding target: step 10break
Te mostramos las comentarios y valoraciones de los usuarios
Te invitamos a estimular nuestra labor exponiendo un comentario y dejando una valoración te estamos agradecidos.