Guía rápida
1. Requisitos previos¶
Necesitas tener conocimientos básicos de Python.
Para ejecutar los ejemplos, además de NumPy necesitarás pandas instalado.
pip install sysidentpy pandas
# Opcional: Para redes neuronales y funcionalidades avanzadas
pip install sysidentpy["all"]
2. Principales funcionalidades¶
SysIdentPy ofrece una estructura flexible para construir, validar y visualizar modelos no lineales de serie temporal y sistemas dinámicos. El proceso de modelado incluye algunos pasos: definir la representación matemática, elegir el algoritmo de estimación de parámetros, seleccionar la estructura del modelo y determinar el horizonte de predicción.
Las siguientes funcionalidades están disponibles en SysIdentPy:
Clases de Modelo¶
- NARMAX, NARX, NARMA, NAR, NFIR, ARMAX, ARX, AR y sus variantes.
Representaciones Matemáticas¶
- Polynomial (Polinomial)
- Neural
- Fourier
- Laguerre
- Bernstein
- Bilinear
- Legendre
- Hermite
- HermiteNormalized
También puedes definir modelos NARX como Bayesian y Gradient Boosting usando la clase GeneralNARX, que ofrece integración directa con varios algoritmos de aprendizaje automático.
Algoritmos de Selección de Estructura¶
- Forward Regression Orthogonal Least Squares (FROLS)
- Meta-model Structure Selection (MeMoSS / MetaMSS)
- Accelerated Orthogonal Least Squares (AOLS)
- Entropic Regression (ER)
- Ultra Orthogonal Least Squares (UOLS)
Métodos de Estimación de Parámetros¶
- Mínimos Cuadrados (MQ)
- Total Least Squares (TLS)
- Mínimos Cuadrados Recursivos (MQR)
- Ridge Regression
- Non-Negative Least Squares (NNLS)
- Least Squares Minimal Residues (LSMR)
- Bounded Variable Least Squares (BVLS)
- Least Mean Squares (LMS) y sus variantes:
- Affine LMS
- LMS with Sign Error
- Normalized LMS
- LMS with Normalized Sign Error
- LMS with Sign Regressor
- Normalized LMS with Sign Sign
- Leaky LMS
- Fourth-Order LMS
- Mixed Norm LMS
Criterios de Selección de Orden¶
- Criterio de Información de Akaike (AIC)
- Criterio de Información de Akaike Corregido (AICc)
- Criterio de Información Bayesiano (BIC)
- Final Prediction Error (FPE)
- Khundrin's Law of Iterated Logarithm Criterion (LILC)
Métodos de Predicción¶
- Un paso adelante (one-step ahead)
- n pasos adelante (n-steps ahead)
- Paso infinito adelante / simulación libre (infinity-steps / free run simulation)
Herramientas de Visualización¶
- Gráficos de predicción
- Análisis de residuos
- Visualización de la estructura del modelo
- Visualización de parámetros
Como puedes ver, SysIdentPy soporta diversas combinaciones de modelos. No te preocupes por elegir todas las configuraciones al principio. Comencemos con las configuraciones por defecto.
Para información completa sobre modelos, métodos y un conjunto de ejemplos y benchmarks implementados en SysIdentPy, consulta nuestro libro:
Nonlinear System Identification and Forecasting: Theory and Practice With SysIdentPyEste libro ofrece una guía detallada para ayudarte en tu trabajo con SysIdentPy.
También puedes explorar los tutoriales en la documentación para ejemplos prácticos.
3. Guía Rápida¶
Para mantener las cosas simples, cargaremos algunos datos simulados para los ejemplos.
from sysidentpy.utils.generate_data import get_siso_data
# Genera un conjunto de datos de un sistema dinámico simulado.
x_train, x_valid, y_train, y_valid = get_siso_data(
n=300,
colored_noise=False,
sigma=0.0001,
train_percentage=80
)
Construye tu primer modelo NARX¶
Con los datos cargados, vamos a construir un modelo NARX Polinomial. Usando la configuración por defecto, necesitas definir al menos el método de selección de estructura y la representación matemática (función base).
import pandas as pd
from sysidentpy.model_structure_selection import FROLS
from sysidentpy.basis_function import Polynomial
basis_function = Polynomial(degree=2)
model = FROLS(
ylag=2,
xlag=2,
basis_function=basis_function,
)
El método de selección de estructura (MSS) habilita las operaciones de "entrenamiento" y predicción del modelo.
Aunque distintos algoritmos tienen diferentes hiperparámetros, ese no es el foco aquí. Mostraremos cómo modificarlos, pero no discutiremos las mejores configuraciones en esta guía.
Para evaluar el rendimiento, puedes usar cualquier métrica disponible en la librería. Ejemplo con Root Relative Squared Error (RRSE):
from sysidentpy.metrics import root_relative_squared_error
rrse = root_relative_squared_error(y_valid, yhat)
print(rrse)
Para mostrar la ecuación final del modelo polinomial, usa la función results. Requiere la siguiente configuración:
final_model: Regresores seleccionados tras el ajustetheta: Parámetros estimadoserr: Error Reduction Ratio (ERR)
from sysidentpy.utils.display_results import results
r = pd.DataFrame(
results(
model.final_model, model.theta, model.err,
model.n_terms, err_precision=8, dtype='sci'
),
columns=['Regressors', 'Parameters', 'ERR'])
print(r)
Resultado (ejemplo):