- sysidentpy 0.3.1
- How do I install SysIdentPy?
- Requirements
- What are the main features of SysIdentPy?
- Why does SysIdentPy exist?
- How do I use sysIdentPy?
- Saved searches
- Use saved searches to filter your results more quickly
- License
- GerbenBeintema/deepSI
- Name already in use
- Sign In Required
- Launching GitHub Desktop
- Launching GitHub Desktop
- Launching Xcode
- Launching Visual Studio Code
- Latest commit
- Git stats
- Files
- README.md
- About
sysidentpy 0.3.1
SysIdentPy is an open-source Python module for System Identification using NARMAX models built on top of numpy and is distributed under the 3-Clause BSD license. SysIdentPy provides an easy-to-use and flexible framework for building Dynamical Nonlinear Models for time series and dynamic systems.
How do I install SysIdentPy?
The easiest way to get SysIdentPy running is to install it using pip
Requirements
A few examples require pandas >= 0.18.0. However, it is not required to use SysIdentPy.
What are the main features of SysIdentPy?
Feature | What is this? |
---|---|
NARMAX philosophy | You can build variations of NARMAX models like NARX, NAR, NARMA, NFIR, ARMA, ARX, AR, and others. |
Model Structure Selection | Easy-to-use methods to select the best terms to build your models, including FROLS and MetaMSS and several combinations with parameter estimation techniques to select the model terms. |
Basis Function | You can use different basis functions to build your models. You can set linear and nonlinear basis functions and ensemble them to get custom NARMAX models. |
Parameter Estimation | More than 15 methods to estimate the model parameters and test different structure selection scenarios. |
Model Simulation | You can reproduce results from papers easily with SimulateNARMAX class. Moreover, you can test published models with different parameter estimation methods and compare the performance. |
Neural NARX | You can use SysIdentPy with Pytorch to create custom neural NARX models architectures which support all the optimizers and loss functions from Pytorch. |
General Estimators | You can use estimators from packages like scikit-learn, Catboost, and many other compatible interfaces and composition tools, to create NARMAX models. |
Why does SysIdentPy exist?
SysIdentPy aims to be a free and open source package to help the community to design NARMAX models. More than that, be a free and robust alternative to one of the most used tools to build NARMAX models, which is the Matlab’s System Identification Toolbox.
The project is actively maintained by Wilson R. L. Junior and looking for contributors.
How do I use sysIdentPy?
The SysIdentPy documentation includes 20 examples to help get you started:
- Typical «Hello World» example, for an entry-level description of the main SysIdentPy concepts
- A dedicated section focusing on SysIdentPy features, like model structure selection algorithms, basis functions, parameter estimation, and more.
- A dedicated section focusing on use cases using SysIdentPy with real world datasets. Besides, there is some brief comparisons and benchmarks against other time series tools, like Prophet, Neural Prophet, ARIMA, and more.
Saved searches
Use saved searches to filter your results more quickly
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.
Dynamical System Identification using python incorporating numerous powerful deep learning methods. (deepSI = deep System Identification)
License
GerbenBeintema/deepSI
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
README.md
Dynamical System Identification using python incorporating numerous powerful deep learning methods. (deepSI = deep System Identification)
The goal of deepSI is to provide a platform for the development and use of (deep) dynamical system identification methods. Furthermore, the deepSI module (i.e. toolbox) is implemented such that anyone can use it without requiring deep expert knowledge in either system identification or machine learning. Lastly, the usage of deepSI is intuitive and often requiring effectively no more than 10 lines of code as seen in the example below.
Documentation and Installation
The deepSI Documentation and Installation details are available at deepsi.readthedocs.io/en/latest.
import deepSI from matplotlib import pyplot as plt train, test = deepSI.datasets.Silverbox() # Automaticly downloaded (and cashed) the Silverbox system data # It also splitted the data into two instances of System_data plt.plot(train.y) #train.y = measured outputs (and train.u = the system inputs) plt.plot(test.y) plt.ylabel('y'); plt.xlabel('t'); plt.legend(['train','test']); plt.show()
#ARX model sys_SS_linear = deepSI.fit_systems.Sklearn_io_linear(na=2, nb=5) sys_SS_linear.fit(train) #fit the ARX data test_simulation_SS_linear = sys_SS_linear.apply_experiment(test) #Encoder method with neural networks (Beintema, et al. 2020a) sys_encoder = deepSI.fit_systems.SS_encoder(nx=4, na=10, nb=10) #batch optimization using PyTorch for back propagation. sys_encoder.fit(train_sys_data=train, val_sys_data=test[:5000], epochs=50, batch_size=256, loss_kwargs='nf':50>) test_simulation_encoder = sys_encoder.apply_experiment(test) #plotting the residuals plt.plot(test.y) plt.plot(test.y-test_simulation_SS_linear.y) plt.plot(test.y-test_simulation_encoder.y) plt.ylabel('y'); plt.xlabel('t'); plt.legend(['Measured','Simulation ARX', 'Simulation SS encoder']) plt.show()
- Numerous System Identification methods
- Linear methods (e.g. ARX, Linear State Space)
- Nonlinear methods (e.g. NARX, GP, SVM, Sub-space Encoder)
- User defined identification methods
Featured Projects utilizing deepSI
Gerben Beintema, Roland Toth, Maarten Schoukens; Nonlinear State-Space Identification using Deep Encoder Networks; Submitted to l4dc 2021a; Github Repository, Arxiv
Gerben Beintema, Roland Toth, Maarten Schoukens; Nonlinear State-space Model Identification from Video Data using Deep Encoders; Submitted to SYSID 2021b; Github repository, Arxiv
deepSI is in ongoing development and anyone can contribute to any part of module.
Feel free to contact me directly for any question or issues related to deepSI.
Main developer: PhD candidate Gerben Beintema at the TU/e. Control Systems. g.i.beintema@tue.nl
When citing deepSI please use
Gerben Beintema, Roland Toth, Maarten Schoukens. Nonlinear State-Space Identification using Deep Encoder Networks; Proceedings of the 3rd Conference on Learning for Dynamics and Control, PMLR 144:241-250, 2021. Github, Published version
About
Dynamical System Identification using python incorporating numerous powerful deep learning methods. (deepSI = deep System Identification)