Funções Base - Visão Geral¶
Exemplo criado por Wilson Rocha Lacerda Junior
Procurando mais detalhes sobre modelos NARMAX? Para informações completas sobre modelos, métodos e uma ampla variedade de exemplos e benchmarks implementados no SysIdentPy, confira nosso livro: Nonlinear System Identification and Forecasting: Theory and Practice With SysIdentPy
Este livro oferece orientação aprofundada para apoiar seu trabalho com o SysIdentPy.
Este notebook não tem como objetivo encontrar os melhores modelos possíveis para identificação de sistemas. Em vez disso, serve como uma demonstração simples das funções base disponíveis no SysIdentPy. O objetivo é apresentar cada função base com código mínimo para ilustrar como usá-las dentro do framework SysIdentPy.
Usamos configurações básicas para seleção de estrutura do modelo e estimação de parâmetros, mas para aplicações do mundo real, você pode precisar ajustar os hiperparâmetros e explorar métodos mais avançados para alcançar resultados ótimos.
Para mais detalhes sobre o SysIdentPy e como aproveitar totalmente suas capacidades, consulte a documentação oficial e o livro.
Introdução¶
Neste exemplo, exploraremos como usar o SysIdentPy para aplicar várias funções base para identificação de sistemas e seleção de estrutura do modelo. Usaremos um dataset simulado e aplicaremos o algoritmo FROLS com diferentes funções base. Cada função base será avaliada e os resultados serão plotados para comparar seu desempenho.
Você pode aprender mais sobre as funções base do SysIdentPy consultando a documentação oficial.
from sysidentpy.utils.generate_data import get_siso_data
from sysidentpy.parameter_estimation import LeastSquares
from sysidentpy.utils.plotting import plot_results
from sysidentpy.model_structure_selection import FROLS
from sysidentpy import basis_function
Gerando Dados Simulados¶
Começamos gerando dados simulados Single-Input Single-Output (SISO) usando a função get_siso_data. Este utilitário nos permite criar dados realistas para tarefas de identificação de sistemas. Para mais detalhes sobre como personalizar o processo de geração de dados, visite a documentação de utilitários de dados.
x_train, x_valid, y_train, y_valid = get_siso_data(
n=1000, colored_noise=False, sigma=0.0001, train_percentage=90
)
Funções Base no SysIdentPy¶
O SysIdentPy fornece várias funções base que podem ser usadas na identificação de sistemas. As funções base transformam os dados de entrada em um espaço de features, permitindo a identificação de sistemas não-lineares.
O seguinte trecho de código carrega e instancia dinamicamente cada função base disponível. Você pode explorar a lista completa de funções base disponíveis no SysIdentPy visitando a documentação de funções base.
['Bernstein',
'Bilinear',
'Fourier',
'Hermite',
'HermiteNormalized',
'Laguerre',
'Legendre',
'Polynomial']
import inspect
from sysidentpy import basis_function
for basis_name, bf in inspect.getmembers(basis_function):
if inspect.isclass(bf):
estimator = LeastSquares()
model = FROLS(
order_selection=True,
n_info_values=15,
ylag=2,
xlag=2,
info_criteria="aic",
estimator=estimator,
err_tol=None,
basis_function=bf(degree=5),
)
model.fit(X=x_train, y=y_train)
yhat = model.predict(X=x_valid, y=y_valid)
plot_results(
y=y_valid,
yhat=yhat,
n=100,
title=f"{basis_name}",
xlabel="Samples",
ylabel=r"y, $\hat{y}$",
data_color="#1f77b4",
model_color="#ff7f0e",
marker="o",
model_marker="*",
linewidth=1.5,
figsize=(10, 6),
style="seaborn-v0_8-notebook",
facecolor="white",
)
c:\Users\wilso\Desktop\projects\GitHub\sysidentpy\sysidentpy\utils\deprecation.py:40: FutureWarning: `bias` and `n` are deprecated in 0.5.0 and will be removed in 1.0.0. Use `include_bias` and `degree`, respectively, instead.
warnings.warn(message, FutureWarning, stacklevel=1)







