Background chart

Introduction to SysIdentPy

Polynomial NARX Example
                
    from sysidentpy.model_structure_selection import FROLS
    from sysidentpy.basis_function import Polynomial
    from sysidentpy.utils.generate_data import get_siso_data

    x_train, x_valid, y_train, y_valid = get_siso_data(
        n=1000, colored_noise=False, sigma=0.0001, train_percentage=90
    )

    basis_function = Polynomial(degree=2)
    model = FROLS(ylag=2, xlag=2, basis_function=basis_function)

    model.fit(X=x_train, y=y_train)
    yhat = model.predict(X=x_valid, y=y_valid)
                
              
                
    from sysidentpy.model_structure_selection import FROLS
    from sysidentpy.basis_function import Legendre
    from sysidentpy.utils.generate_data import get_siso_data

    x_train, x_valid, y_train, y_valid = get_siso_data(
        n=1000, colored_noise=False, sigma=0.0001, train_percentage=90
    )

    basis_function = Legendre(degree=2)
    model = FROLS(ylag=2, xlag=2, basis_function=basis_function)

    model.fit(X=x_train, y=y_train)
    yhat = model.predict(X=x_valid, y=y_valid)
                
              
                
    from sysidentpy.model_structure_selection import FROLS
    from sysidentpy.basis_function import Fourier
    from sysidentpy.utils.generate_data import get_siso_data

    x_train, x_valid, y_train, y_valid = get_siso_data(
        n=1000, colored_noise=False, sigma=0.0001, train_percentage=90
    )

    basis_function = Fourier(degree=2)
    model = FROLS(ylag=2, xlag=2, basis_function=basis_function)

    model.fit(X=x_train, y=y_train)
    yhat = model.predict(X=x_valid, y=y_valid)
                
              
                
    from torch import nn
    from sysidentpy.neural_network import NARXNN

    from sysidentpy.basis_function import Polynomial
    from sysidentpy.utils.generate_data import get_siso_data

    x_train, x_valid, y_train, y_valid = get_siso_data(
        n=1000, colored_noise=False, sigma=0.01, train_percentage=80
    )

    class NARX(nn.Module):
        def __init__(self):
            super().__init__()
            self.lin = nn.Linear(4, 30)
            self.lin2 = nn.Linear(30, 1)
            self.tanh = nn.Tanh()

        def forward(self, xb):
            z = self.lin(xb)
            z = self.tanh(z)
            z = self.lin2(z)
            return z


    narx_net2 = NARXNN(
        net=NARX(),
        ylag=2,
        xlag=2,
        basis_function=Polynomial(degree=1),
        optimizer="Adam",
        optim_params={
            "betas": (0.9, 0.999),
            "eps": 1e-05,
        },
    )

    narx_net2.fit(X=x_train, y=y_train)
    yhat = narx_net2.predict(X=x_valid, y=y_valid)
                
              
                
    from sysidentpy.utils.generate_data import get_siso_data
    from sysidentpy.general_estimators import NARX
    from sklearn.linear_model import BayesianRidge
    from sysidentpy.basis_function import Polynomial

    x_train, x_valid, y_train, y_valid = get_siso_data(
        n=1000, colored_noise=False, sigma=0.0001, train_percentage=90
    )

    BayesianRidge_narx = NARX(
        base_estimator=BayesianRidge(),
        xlag=2,
        ylag=2,
        basis_function=Polynomial(degree=2),
        model_type="NARMAX",
    )

    BayesianRidge_narx.fit(X=x_train, y=y_train)
    yhat = BayesianRidge_narx.predict(X=x_valid, y=y_valid)
                
              
                
    from catboost import CatBoostRegressor
    from sysidentpy.utils.generate_data import get_siso_data
    from sysidentpy.general_estimators import NARX
    from sysidentpy.basis_function import Polynomial

    x_train, x_valid, y_train, y_valid = get_siso_data(
        n=1000, colored_noise=False, sigma=0.0001, train_percentage=90
    )

    catboost_narx = NARX(
        base_estimator=CatBoostRegressor(
            iterations=300,
            learning_rate=0.1
        ),
        xlag=2,
        ylag=2,
        basis_function=Polynomial(degree=2),
        model_type="NARMAX",
        fit_params={"verbose": False},
    )

    catboost_narx.fit(X=x_train, y=y_train)
    yhat = catboost_narx.predict(X=x_valid, y=y_valid, steps_ahead=None)
                
              

Trusted by Leading Companies

Organizations worldwide rely on SysIdentPy for their dynamic modeling needs

FREE

Nonlinear System Identification and Forecasting

Welcome to our comprehensive companion book on System Identification! Master dynamic models and forecasting with practical, real-world examples.

300+ pages 10+ chapters 50+ examples

Learn comprehensive algorithms for identification, forecasting, and analysis of nonlinear systems. From theory to practice.

Ebook Icon Get Your Free Guide

Main Developer

Wilson Rocha
Wilson Rocha

Head of Data Science at RD. Master in Electrical Engineering. Professor. Member of Control and Modelling Group (GCOM)

Our Contributors

Trusted by the Community

Join thousands of developers and researchers worldwide

0

GitHub Stars

0

Total Downloads

0

Downloads/Month

0

Test Coverage

0

Contributors

0

Years Active

What Users Say About SysIdentPy

Real feedback from data scientists and engineers

Latest Community Posts

Stay updated with tutorials, meetups, and community events

PT

Open Source Packages

Learn about open source development and contribution

Read More
PT

Nubank Meetup Presentation

Community presentation about SysIdentPy at Nubank

Read More
PT

GCoM Meetup

System identification workshop with the GCoM research group

Read More