Conjunts de dades
El mòdul datasets proporciona una família de generadors basats en equacions per a diversos conjunts de dades que s’utilitzen habitualment en la recerca en aprenentatge automàtic. Tots els generadors deriven de Dataset i exposen un mètode generate() comú:
from qilisdk.ml.datasets import NARMA
dataset = NARMA(order=10, seed=0)
sample = dataset.generate(1000)
inputs, targets = sample
El DatasetSample retornat és un parell (inputs, targets).
També podeu visualitzar els conjunts de dades generats amb el mètode .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")
Generadors disponibles
NARMA— Identificació de sistemes amb mitjana mòbil autoregressiva no lineal.MackeyGlass— Equació diferencial amb retard caòtica de Mackey–Glass.Lorenz— Atractor de Lorenz.SantaFeLaser— Intensitat del làser de Santa Fe (equacions de Lorenz–Haken).HenonMap— Mapa de Hénon.LogisticMap— Mapa logístic.
NARMA
El punt de referència de mitjana mòbil autoregressiva no lineal (NARMA) és una tasca d’identificació de sistemes. Un flux d’entrada aleatori \(u(t) \sim \mathcal{U}(0, 0.5)\) acciona una recurrència no lineal d’ordre \(n\) la sortida de la qual, \(y(t)\), s’ha de predir a partir de \(u\):
Els coeficients per defecte \((\alpha, \beta, \gamma, \delta) = (0.3, 0.05, 1.5, 0.1)\) corresponen a la ubiqua tasca NARMA10 (order=10). A diferència dels altres generadors, inputs és l’accionament aleatori \(u\) i targets és la resposta del sistema \(y\); tots dos tenen forma (npoints, 1). Com que l’accionament és aleatori, es pot especificar una seed per garantir la reproductibilitat.
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 és una equació diferencial amb retard no lineal que produeix un atractor caòtic:
Amb els paràmetres estàndard \(\beta = 0.2\), \(\gamma = 0.1\), \(n = 10\), el comportament queda determinat pel retard \(\tau\): la sèrie és periòdica per a \(\tau\) petits, lleugerament caòtica a \(\tau = 17\) i cada vegada més caòtica més enllà. L’equació s’integra amb un esquema RK4 de pas fix amb resolució dt i es submostreja cada sample_every passos.
from qilisdk.ml.datasets import MackeyGlass
inputs, targets = MackeyGlass(tau=17.0).generate(2000)
print(inputs.shape, targets.shape)
Lorenz
L’atractor Lorenz és un sistema dinàmic caòtic tridimensional:
La trajectòria s’integra amb RK4 i es submostreja, donant lloc a una tasca de predicció de horizon passos endavant sobre l’estat tridimensional, de manera que inputs i targets tenen tots dos 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 conjunt de dades A original de la Santa Fe Time Series Competition és un enregistrament de les pulsacions caòtiques d’intensitat d’un làser de \(\mathrm{NH_3}\) d’infraroig llunyà. En lloc de distribuir l’enregistrament, SantaFeLaser reprodueix la mateixa dinàmica qualitativa des de primers principis mitjançant les equacions de làser Lorenz–Haken d’un sol mode:
on \(E\) és l’amplitud del camp, \(P\) la polarització i \(N\) la inversió de població. La magnitud mesurada és la intensitat del làser \(I \propto E^2\), que és no negativa i reprodueix el comportament de l’enregistrament de Santa Fe. Tant inputs com targets tenen forma (npoints, 1).
from qilisdk.ml.datasets import SantaFeLaser
inputs, targets = SantaFeLaser().generate(2000)
print(inputs.min() >= 0.0)
HenonMap
El HenonMap és un sistema caòtic discret bidimensional:
que és caòtic per als paràmetres \(a = 1.4\), \(b = 0.3\). generate() retorna una tasca de predicció de horizon passos endavant sobre l’estat bidimensional, de manera que inputs i targets tenen tots dos 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 és un sistema caòtic unidimensional senzill:
que esdevé caòtic a mesura que la taxa de creixement \(r\) s’aproxima a 4 (el valor per defecte \(r = 3.9\) se situa ben endins del règim caòtic). generate() retorna una tasca de predicció de horizon passos endavant, de manera que inputs i targets tenen forma (npoints, 1).
from qilisdk.ml.datasets import LogisticMap
inputs, targets = LogisticMap(r=3.9, horizon=1).generate(2000)
print(inputs.shape, targets.shape)