Conjuntos de datos
El módulo datasets proporciona una familia de generadores basados en ecuaciones para diversos conjuntos de datos de uso habitual en la investigación en aprendizaje automático. Todos los generadores derivan de Dataset y exponen un método generate() común:
from qilisdk.ml.datasets import NARMA
dataset = NARMA(order=10, seed=0)
sample = dataset.generate(1000)
inputs, targets = sample
El DatasetSample devuelto es un par (inputs, targets).
También puede visualizar los conjuntos de datos generados con el método .draw() de cada generador:
from qilisdk.ml.datasets import NARMA
dataset = NARMA(order=10, seed=0)
sample = dataset.generate(1000)
dataset.draw(sample, style="1d")
Generadores disponibles
NARMA— Identificación de sistemas con media móvil autorregresiva no lineal.MackeyGlass— Ecuación diferencial con retardo caótica de Mackey–Glass.Lorenz— Atractor de Lorenz.SantaFeLaser— Intensidad del láser de Santa Fe (ecuaciones de Lorenz–Haken).HenonMap— Mapa de Hénon.LogisticMap— Mapa logístico.
NARMA
El punto de referencia de media móvil autorregresiva no lineal (NARMA) es una tarea de identificación de sistemas. Un flujo de entrada aleatorio \(u(t) \sim \mathcal{U}(0, 0.5)\) excita una recurrencia no lineal de orden \(n\) cuya salida \(y(t)\) debe predecirse a partir de \(u\):
Los coeficientes por defecto \((\alpha, \beta, \gamma, \delta) = (0.3, 0.05, 1.5, 0.1)\) corresponden a la omnipresente tarea NARMA10 (order=10). A diferencia de los demás generadores, inputs es la excitación aleatoria \(u\) y targets es la respuesta del sistema \(y\); ambos tienen forma (npoints, 1). Como la excitación es aleatoria, se puede especificar una seed para garantizar la reproducibilidad.
from qilisdk.ml.datasets import NARMA
inputs, targets = NARMA(order=10, input_range=(0.0, 0.5), seed=42).generate(2000)
print(inputs.shape, targets.shape)
MackeyGlass
El sistema MackeyGlass es una ecuación diferencial con retardo no lineal que produce un atractor caótico:
Con los parámetros estándar \(\beta = 0.2\), \(\gamma = 0.1\), \(n = 10\), el comportamiento lo fija el retardo \(\tau\): la serie es periódica para \(\tau\) pequeños, ligeramente caótica en \(\tau = 17\) y cada vez más caótica más allá. La ecuación se integra con un esquema RK4 de paso fijo con resolución dt y se submuestrea cada sample_every pasos.
from qilisdk.ml.datasets import MackeyGlass
inputs, targets = MackeyGlass(tau=17.0).generate(2000)
print(inputs.shape, targets.shape)
Lorenz
El atractor Lorenz es un sistema dinámico caótico tridimensional:
La trayectoria se integra con RK4 y se submuestrea, lo que da lugar a una tarea de predicción de horizon pasos por delante sobre el estado tridimensional, por lo que inputs y targets tienen ambos forma (npoints, 3).
from qilisdk.ml.datasets import Lorenz
inputs, targets = Lorenz(sigma=10.0, rho=28.0).generate(2000)
print(inputs.shape, targets.shape)
SantaFeLaser
El conjunto de datos A original de la Santa Fe Time Series Competition es una grabación de las pulsaciones caóticas de intensidad de un láser de \(\mathrm{NH_3}\) de infrarrojo lejano. En lugar de distribuir la grabación, SantaFeLaser reproduce la misma dinámica cualitativa desde primeros principios mediante las ecuaciones de láser Lorenz–Haken de un solo modo:
donde \(E\) es la amplitud del campo, \(P\) la polarización y \(N\) la inversión de población. La magnitud medida es la intensidad del láser \(I \propto E^2\), que es no negativa y reproduce el comportamiento de la grabación de Santa Fe. Tanto inputs como targets tienen forma (npoints, 1).
from qilisdk.ml.datasets import SantaFeLaser
inputs, targets = SantaFeLaser().generate(2000)
print(inputs.min() >= 0.0)
HenonMap
El HenonMap es un sistema caótico discreto bidimensional:
que es caótico para los parámetros \(a = 1.4\), \(b = 0.3\). generate() devuelve una tarea de predicción de horizon pasos por delante sobre el estado bidimensional, por lo que inputs y targets tienen ambos forma (npoints, 2).
from qilisdk.ml.datasets import HenonMap
inputs, targets = HenonMap(a=1.4, b=0.3).generate(2000)
print(inputs.shape, targets.shape)
LogisticMap
El LogisticMap es un sistema caótico unidimensional sencillo:
que se vuelve caótico a medida que la tasa de crecimiento \(r\) se acerca a 4 (el valor por defecto \(r = 3.9\) se sitúa bien dentro del régimen caótico). generate() devuelve una tarea de predicción de horizon pasos por delante, por lo que inputs y targets tienen forma (npoints, 1).
from qilisdk.ml.datasets import LogisticMap
inputs, targets = LogisticMap(r=3.9, horizon=1).generate(2000)
print(inputs.shape, targets.shape)