--- template: overrides/main.html title: Histórico de Alterações --- # Alterações no SysIdentPy ## v0.9.0 ### COLABORADORES - Wilson Rocha Lacerda Junior (wilsonrljr) ### MUDANÇAS Esta versão introduz suporte experimental e opt-in ao **padrão Array API**. A cobertura automatizada mais forte nesta versão é para NumPy, PyTorch (CPU e CUDA) e `array_api_strict`, enquanto CuPy e JAX aparecem como alvos de compatibilidade experimentais por meio da mesma camada de despacho. Esta é uma mudança arquitetural significativa que traz flexibilidade de backend e execução em GPU para os caminhos nativos de backend já suportados, sem alterar o comportamento padrão com NumPy. #### Funcionalidade Principal — Suporte ao Padrão Array API - O SysIdentPy agora oferece suporte experimental ao padrão Array API através de um mecanismo de despacho opt-in. Os usuários podem habilitá-lo globalmente com `set_config(array_api_dispatch=True)` ou temporariamente com `config_context(array_api_dispatch=True)`. Quando desabilitado (o padrão), o SysIdentPy se comporta exatamente como antes, usando exclusivamente NumPy. - O sistema de despacho é construído sobre cópias vendorizadas de `array-api-compat` (v1.14.0) e `array-api-extra` (v0.10.1), seguindo a mesma abordagem usada pelo scikit-learn e SciPy. - Um novo módulo interno `sysidentpy._lib._array_api` fornece a camada de compatibilidade principal com funções como `get_namespace()`, `_to_numpy()`, `_lstsq()`, `_zeros()`, `_ones()`, `_concat()`, `_diag()`, `_set_element()`, `_copy()`, `_median()`, `_nanargmin()`, `_vector_norm()`, `_pow()` e outras. - Um novo módulo `sysidentpy._lib._err` fornece uma implementação agnóstica de backend para o cálculo do ERR (Error Reduction Ratio). - Configuração thread-safe via `sysidentpy._config` garante isolamento em workloads multi-threaded. #### Integração Array API nos Módulos - **Seleção de Estrutura de Modelo**: FROLS, AOLS, OFRBase, UOFR e a família Orthogonal Floating Search (OSF, OIF, OOS/O2S) suportam despacho Array API nos backends validados descritos acima. `fit()` e a predição 1-step permanecem nativos no backend, enquanto a predição sequencial em backends não NumPy segue o fallback documentado para NumPy/CPU. MetaMSS, Entropic Regression (ER) e RMSS requerem NumPy devido a dependências do SciPy. - **Estimação de Parâmetros**: 18 estimadores suportam o despacho Array API (LeastSquares, RidgeRegression, TotalLeastSquares, RecursiveLeastSquares, AffineLeastMeanSquares e todas as 12 variantes da família LMS). 3 estimadores requerem NumPy (NonNegativeLeastSquares, BoundedVariableLeastSquares, LeastSquaresMinimalResidual). - **Funções Base**: `Polynomial`, `Fourier` e `Bilinear` funcionam com despacho Array API. `Bernstein`, `Legendre`, `Hermite`, `Hermite Normalized` e `Laguerre` continuam restritas ao NumPy porque dependem de avaliadores polinomiais do SciPy. - **Simulação**: Todo o módulo de simulação suporta despacho Array API. - **Métricas**: Todas as métricas de regressão suportam despacho Array API. - **Utilitários**: `check_arrays`, `information_matrix` e análise residual suportam despacho Array API. - **NARMAX Base**: O pipeline de predição suporta despacho Array API. `fit()` e predição 1-step permanecem nativos no backend, enquanto a predição sequencial em backends não NumPy (`steps_ahead=None` ou `steps_ahead > 1`) usa fallback para NumPy/CPU e converte as predições de volta para o namespace e dispositivo originais. #### Nova API Pública - `sysidentpy.set_config(array_api_dispatch=True/False)` — definir configuração global. - `sysidentpy.get_config()` — obter configuração atual. - `sysidentpy.config_context(array_api_dispatch=True/False)` — gerenciador de contexto para configuração temporária. #### Correções de Bugs - Corrigido indexação escalar no Entropic Regression ao usar NumPy 2.x. - Corrigido `_prepare_datasets` do RMSS para validar consistência de dimensões de entrada antes do loop de construção do modelo. - As fronteiras públicas de Array API em `fit()`/`predict()` agora rejeitam explicitamente namespaces e dispositivos mistos, em vez de normalizar silenciosamente para o primeiro array. - Removido código morto no backward elimination do Entropic Regression. #### Testes - Adicionados testes de despacho Array API em todos os módulos principais usando `array_api_strict` e backends PyTorch. - Adicionados testes de equivalência numérica cross-backend (NumPy vs PyTorch) para computação ERR. - Adicionados testes de release para rejeição de namespace/dispositivo mistos e preservação de namespace no fallback sequencial via CPU. - Adicionados testes confirmando que `Fourier` e `Bilinear` aceitam entradas Array API e que funções base dependentes de SciPy falham rapidamente sob dispatch. - Adicionado novo notebook de exemplo `array-api-benchmark.ipynb`. #### Ferramentas e Configuração - Atualizado Ruff de v0.2.2 para v0.15.8 (local e pre-commit). - Atualizado hook id do pre-commit de `ruff` para `ruff-check`. - Substituído prefixo de regra deprecado `TCH` por `TC` na configuração do Ruff. - Removido `isort` das dependências de desenvolvimento. - Adicionado `array-api-strict >=2.0` às dependências de desenvolvimento. ### IMPACTO O suporte ao Array API é uma das mudanças arquiteturais mais significativas na história do SysIdentPy. Ele permite que pesquisadores e profissionais usem backends com GPU validados, como PyTorch, nos caminhos nativos de backend já suportados, enquanto CuPy e JAX permanecem explicitamente experimentais até que a evidência automatizada acompanhe. O design opt-in preserva total compatibilidade retroativa, e os caminhos ainda dependentes de SciPy agora falham de forma explícita em vez de sugerir compatibilidade inexistente. A implementação segue os padrões estabelecidos pelo scikit-learn e SciPy, garantindo alinhamento com a direção do ecossistema Scientific Python em direção à computação agnóstica de hardware. ### TESTES A matriz de CI continua testando contra Python 3.10–3.14. O despacho Array API é exercitado com `array_api_strict` e backends PyTorch, incluindo verificações de preservação de namespace, rejeição pública de entradas mistas, restauração do fallback sequencial e cobertura de fail-fast para caminhos restritos ao NumPy. ## v0.8.0 ### COLABORADORES - Wilson Rocha Lacerda Junior (wilsonrljr) ### MUDANÇAS Esta versão adiciona duas novas famílias de algoritmos de seleção de estrutura de modelo, correções no UOFR e atualizações abrangentes de documentação e configuração. #### Novos Recursos - Adicionado `RMSS` (Robust Model Structure Selection), um novo algoritmo para seleção de estrutura de modelo usando o critério OMAE (Overall Mean Absolute Error) com reamostragem leave-one-out por padrão. Projetado para robustez em amostras pequenas e múltiplos conjuntos de dados. Baseado no artigo de Gu, Y., & Wei, H.-L., "A Robust Model Structure Selection Method for Small Sample Size and Multiple Datasets Problems." - Adicionada a família de algoritmos Orthogonal Floating Search: `OSF` (Orthogonal Sequential Floating Forward), `OIF` (Orthogonal Insertion-removal Floating search), `OOS` (Orthogonal Oscillating Search) e `O2S` (alias para OOS). Esses algoritmos combinam projeções ortogonais com o critério ERR (Error Reduction Ratio) e estratégias de busca flutuante. #### Correções / Melhorias - Corrigida a aumentação de Sobolev no UOFR para corresponder às equações do artigo original. - Melhorado o desempenho do UOFR com operações em bloco BLAS e einsum. #### Testes - Adicionados conjuntos de testes abrangentes para RMSS e algoritmos OFS. - Expandidos testes do UOFR incluindo cobertura baseada em profundidade para falhas de swing repetidas. #### Documentação & Configuração - Adicionadas páginas de documentação da API para RMSS e Orthogonal Floating Search. - Atualizados guias de início rápido (EN, PT, ES) para listar todos os algoritmos MSS disponíveis. - Corrigidos requisitos de versão desatualizados de Python e NumPy no README. - Corrigida URL do changelog no pyproject.toml (master → main). - Atualizado Black target_version para corresponder às versões suportadas de Python (3.10–3.14). - Removida configuração deprecada `ignore-init-module-imports` do Ruff. - Ampliados limites de versão de dependências de desenvolvimento para pytest e pytest-cov. - Adicionado guard de importação para dependência opcional do PyTorch. - Atualizado `actions/setup-python` para v5 no workflow de CI. - Atualizado ano de copyright para 2026. ### IMPACTO Duas novas famílias de algoritmos de seleção de estrutura de modelo expandem o conjunto de ferramentas disponíveis para pesquisadores e profissionais. O RMSS aborda o importante problema de seleção robusta de modelos com conjuntos de dados pequenos, enquanto a família OFS fornece estratégias flexíveis de busca flutuante para seleção de termos do modelo. ### TESTES Conjuntos de testes expandidos cobrem todos os novos algoritmos. A matriz de CI continua testando contra Python 3.10–3.14. ## v0.7.0 ### COLABORADORES - Wilson Rocha Lacerda Junior (wilsonrljr) - aryan ### ALTERAÇÕES Esta versão traz exportação de equações em formato legível, fluxos neurais reprodutíveis, ganhos significativos de desempenho e a maior atualização de documentação até agora, incluindo sites localizados. #### Novos Recursos - Adicionados `sysidentpy.utils.equation_formatter` e utilitários como `format_equation`, permitindo que qualquer modelo ajustado gere uma equação simbólica que respeita a função base escolhida, os lags e a ordenação `pivv`. - `NeuralNarx` agora aceita `random_state`, normaliza parâmetros do construtor, reutiliza tensores fixados entre dispositivos e emite métricas verbosas em uma única passagem, mantendo os experimentos determinísticos e leves em hardware. - O formatter expõe objetos estruturados `EquationItem`, permitindo que docs, notebooks e ferramentas externas incorporem exatamente os regressores e coeficientes que definem o modelo treinado. #### Melhorias de Desempenho - Funções base polinomiais agora armazenam índices de combinação e constroem termos com multiplicações vetorizadas e buffers pré-alocados, deixando os ajustes NARX/NARMAX de altos graus várias vezes mais rápidos. - `predict` e construtores de regressores reutilizam matrizes de expoentes e buffers, reduzindo drasticamente alocações durante simulações e previsões longas. - UOFR, ERR, `shift_column` e Accelerated OLS agora utilizam slices/einsum amigáveis a BLAS, reduzindo significativamente o tempo de execução em grandes conjuntos de dados. #### Alterações na API - Suporte oficial agora contempla Python 3.10–3.14; Python 3.8/3.9 foram removidos para alinhar com NumPy ≥2.0 e as rodas mais recentes do PyTorch, e o CI acompanha a nova matriz. - Métricas de informação mútua (`mutual_information_knn`, `conditional_mutual_information`) agora ordenam explicitamente seleções de índices, mantendo os cálculos de epsilon determinísticos entre versões do NumPy. - Workflows do GitHub foram atualizados: dependências do PyTorch foram elevadas e artefatos de cobertura passam a ser publicados automaticamente a cada pull request. #### Documentação e Site - A documentação foi reorganizada em `docs/en`, `docs/es` e `docs/pt`, agora alimentadas por `mkdocs-static-i18n`; o livro completo, o guia do desenvolvedor, o quickstart e as landing pages foram traduzidos para português, e as páginas iniciais/landing em espanhol ganharam seus próprios overrides. - Todos os tutoriais/how-to em notebook foram migrados para Markdown, garantindo renderização consistente no mobile e permitindo que tradutores trabalhem diretamente com diffs de texto. - Adicionados novos how-tos (funções base customizadas, Neural NARX, salvar/carregar modelos, simular modelos existentes, least squares estendido), além de páginas expandidas de suporte à comunidade e atualizações no README. - Landing pages receberam CSS inédito, logos de patrocinadores responsivos à cor, blocos “Trusted by” polidos e templates dedicados para cada idioma. - Hooks customizados do MkDocs buscam métricas em tempo real de downloads no PePy e a versão mais recente do PyPI, mantendo o site sempre atualizado. #### Testes, Ferramentas e CI - Centenas de novos testes cobrem MetaMSS, OFRBase, AOLS, ERR, ramos do Neural NARX, utilitários de simulação, estimadores gerais e o formatter de equações, garantindo fixtures determinísticos. - Resultados de cobertura agora são enviados pelo CI, e os segredos necessários para capturar métricas de download foram integrados ao pipeline de docs. - Atualizações de tooling (.gitignore, suporte a uv/venv, linters renovados) simplificam o desenvolvimento local. ### IMPACTO - Equações de modelo podem ser auditadas e incorporadas em qualquer lugar, experimentos com Neural NARX ficam reprodutíveis e regressores vetorizados reduzem drasticamente o tempo de treino e simulação. - Documentação localizada (inglês, espanhol, português) e o livro traduzido diminuem a barreira de entrada para novos usuários ao redor do mundo. ### TESTES - A matriz de CI cobre Python 3.10–3.14, publica resumos de cobertura e o conjunto ampliado de pytest valida o formatter, MetaMSS, fluxos OFR/AOLS, utilidades de simulação, ramos neurais e os hooks do MkDocs. ## v0.6.0 ### COLABORADORES - wilsonrljr - oliveira-mark ### ALTERAÇÕES Esta versão traz melhorias significativas focadas em organização de código, legibilidade e conformidade com PEP8. Inclui ainda uma nova classe base para algoritmos baseados em Error Reduction Ratio (ERR), mais testes e o fim do suporte ao Python 3.7. #### Novos Recursos - Introdução da classe `OFRBase`, que encapsula métodos comuns essenciais para algoritmos baseados em ERR. - Refatoração da classe `FROLS` para herdar de `OFRBase`, concentrando-se apenas no algoritmo ERR. - Implementação do algoritmo Ultra Orthogonal Forward Regression (UOFR), também herdando de `OFRBase`. #### Alterações na API - **BREAKING CHANGE**: Correção de um typo na função base Bernstein (antes `Bersntein`). - **Refatoração e Modularização:** - A classe `InformationMatrix` foi extraída de `narmax_base` para o novo módulo `utils.information_matrix`. - Métodos específicos foram movidos para os novos módulos `utils.lags` e `utils.simulation`, promovendo melhor separação de responsabilidades. - Adicionada mensagem de depreciação para o argumento `solver` do RidgeRegression. #### Melhorias de Qualidade de Código - Renomeação de variáveis e métodos para melhor legibilidade e conformidade com PEP8, incluindo a troca de variáveis maiúsculas por minúsculas. - Imports atualizados para usar os novos módulos utilitários, reduzindo redundância e melhorando a manutenção. - Remoção de imports não usados e parênteses redundantes, simplificando a base de código. - Atualização da versão do Python no workflow de deploy. #### Aprimoramentos em Testes - Inclusão de testes abrangentes para as funções base Bernstein, Bilinear, Hermite (normalizada), Laguerre e Legendre. - Novos testes para métodos utilitários, incluindo `narmax_tools`, `save_load` e as novas utilidades de simulação. - Cobertura de testes aumentada para **92%**, garantindo robustez e confiabilidade. #### Validação e Tratamento de Erros - Implementada validação para `train_percentage`, levantando erro para valores acima de 100%. - Métodos e testes adaptados após a remoção da classe `InformationMatrix`, mantendo consistência em toda a base. #### Atualizações de Documentação - Lançado um frontend redesenhado, com UI moderna e melhor responsividade. - Diversas seções foram reestruturadas para maior organização e clareza. - Reformulados guias como `quick_start`, `developer_guide` e `user_guide`. - Novos exemplos adicionados, incluindo o Sistema de Lorenz e o Mapa Caótico. - Melhoria de gramática e legibilidade em toda a documentação. - Dependências relacionadas a `mkdocs` atualizadas para melhor performance e compatibilidade. - Integração do Google Analytics aprimorada. - Correção de links quebrados (blogs do Nubank e Estatidados) e ajustes de formatação no livro. - Docstrings atualizadas para refletir as mudanças recentes. - Padronização de docstrings e assinaturas de métodos com variáveis minúsculas, seguindo PEP8. - Exemplos de contribuição revisados para refletir a versão atual do `sysidentpy`. - Exemplos do livro integrados à documentação tradicional, com links diretos para a seção do livro. - Estrutura, títulos e links ajustados em vários docs e exemplos para melhor navegação. - Arquivos de dataset removidos; agora estão no repositório dedicado `sysidentpy-data`. - Apoio da JetBrains mencionado no README e na página de patrocinadores. - Correção do `edit uri` ao clicar para editar páginas no site de docs. - Agora todo exemplo carrega os dados do repositório `sysidentpy-data`. #### Atualização de Suporte a Versões do Python - **Suporte ao Python 3.7 foi descontinuado.** A medida acompanha o fim oficial do suporte à versão e resolve incompatibilidades com dependências mais novas. - Alguns algoritmos de estimação de parâmetros, como Bounded Variable Least Squares, exigem versões recentes do SciPy que não suportam Python 3.7. - Usuários ainda podem rodar o SysIdentPy em Python 3.7, mas determinados recursos, incluindo algumas funcionalidades de estimação de parâmetros, ficarão indisponíveis. #### IMPACTO - As mudanças melhoram a modularidade, legibilidade e manutenção da base. A introdução de `OFRBase` simplifica a implementação de algoritmos baseados em ERR e facilita extensões futuras. Testes abrangentes garantem confiabilidade para recursos novos e existentes. #### TESTES - Todos os testes novos e existentes foram executados, atingindo **92% de cobertura**. ## v0.5.3 ### COLABORADORES - wilsonrljr ### ALTERAÇÕES IMPORTANTE! Esta atualização corrige um bug relacionado à função base Bilinear para modelos com mais de 2 entradas. A versão continua preparando o terreno para futuras evoluções do SysIdentPy, facilitando novas funcionalidades e melhorias rumo a um lançamento 1.0.0 robusto. #### Alterações na API - Correção da função base Bilinear para modelos com mais de 2 entradas. A correção ajusta o método `get_max_xlag` em `basis_function_base` e também a criação de `combination_xlag`. ## v0.5.2 ### COLABORADORES - wilsonrljr ### ALTERAÇÕES IMPORTANTE! Esta atualização corrige um bug crítico nas funções base Polynomial e Bilinear para modelos com mais de 3 entradas. O problema surgiu nas mudanças da versão v0.5.0 e agora foi resolvido. A release mantém o foco em preparar o futuro do SysIdentPy. #### Alterações na API - Correção da função base Polynomial e Bilinear para modelos com mais de 3 entradas. ## v0.5.1 ### COLABORADORES - wilsonrljr ### ALTERAÇÕES Esta atualização corrige um bug crítico no estimador não enviesado. O problema afetava todas as funções base e foi solucionado. A versão segue preparando a base para recursos futuros rumo ao 1.0.0. #### Documentação - Remoção de código desnecessário ao importar funções base em vários exemplos. #### Alterações na API - Correção do estimador não enviesado para todas as funções base. ## v0.5.0 ### COLABORADORES - wilsonrljr - nataliakeles - LeWerner42 - Suyash Gaikwad ### ALTERAÇÕES Esta atualização apresenta novos recursos importantes e correções essenciais. A release fornece a base para evoluções futuras do SysIdentPy rumo a um 1.0.0 completo. #### Novos Recursos - **MAJOR**: Adicionada a função base Bilinear (obrigado, nataliakeles). Agora é possível usar modelos NARX bilineares em previsões. - **MAJOR**: Adicionada a função base polinomial Legendre. Agora é possível usar modelos NARX Legendre. - **MAJOR**: Adicionada a função base polinomial Hermite. Agora é possível usar modelos NARX Hermite. **MAJOR**: Adicionada a função base polinomial Hermite Normalizada. Agora é possível usar modelos NARX Hermite Normalizada. **MAJOR**: Adicionada a função base polinomial Laguerre. Agora é possível usar modelos NARX Laguerre. #### Documentação - Adicionada visão geral das funções base. - Arquivos relacionados à documentação v.3.* removidos. - Melhorias de formatação em equações matemáticas. - Correções de typos e gramática no README.md (obrigado Suyash Gaikwad e LeWerner42). - Pequenas adições e correções gramaticais. - Removidos os assets do livro do repositório principal (movidos para `sysidentpy-data`). - Correção do link na capa do livro e ajuste de `x2_val` para `x_valid` em exemplos no README. - Adicionado Pix como método alternativo para patrocinadores brasileiros. - Correção da documentação de código das funções base (não aparecia nos docs antes). - Remoção do `pip install` da lista de dependências necessárias no capítulo. #### Datasets - Datasets agora estão disponíveis em repositório separado. #### Alterações na API - Adicionadas mensagens de depreciação para `bias` e `n` na função base Bernstein. Ambos os parâmetros serão removidos na v0.6.0; use `include_bias` e `degree`. - Deploy-docs.yml: opção alterada para gerar build limpo da documentação. - Deploy-docs.yml: versão do Python ajustada para deploy de docs. - Suporte planejado para Python 3.13 dependendo do lançamento do PyTorch 2.6. Todos os métodos funcionam em Python 3.13, exceto Neural NARX. - Atualização da versão da dependência `mkdocstrings`. - Troca do check polinomial de nome de classe para `isinstance` em todas as classes. - Remoção do suporte a `torch==2.4.0` devido a erro no pip do PyTorch. Será reavaliado antes de liberar versões futuras. - `main` se torna a nova branch padrão. `master` removida. - Actions ajustadas de `master` para `main`. - Classes de funções base divididas em múltiplos arquivos (um por função). - Correção da verificação redundante de bias em Bernstein. - Correção da notação matemática nas docstrings de funções base. - Remoção do arquivo requirements.txt. - Grande refatoração de código: melhorias em type hints, docstrings, remoção de código não usado e outras mudanças para suportar novos recursos. - Adicionada `model_type` no `fit` e `predict` da base de funções base. - Variável `combinations` renomeada para `combination_list` para evitar conflitos com `itertools.combinations`. - Remoção do arquivo requirements.txt. ## v0.4.0 ### COLABORADORES - wilsonrljr ### ALTERAÇÕES Esta atualização traz diversos recursos importantes e mudanças, incluindo breaking changes. Há um guia para ajudar a atualizar o código. Dependendo da definição do modelo, nenhuma alteração pode ser necessária. Optei por ir direto para a versão v0.4.0 porque as mudanças são fáceis de aplicar e os novos recursos são bastante úteis. A release prepara terreno para evoluções futuras rumo ao 1.0.0. #### Novos Recursos - **MAJOR**: Algoritmo NonNegative Least Squares para estimação de parâmetros. - **MAJOR**: Algoritmo Bounded Variables Least Squares para estimação de parâmetros. - **MAJOR**: Algoritmo Least Squares Minimal Residual para estimação de parâmetros. - **MAJOR**: Aprimoramento do algoritmo Error Reduction Ratio no FROLS. Agora é possível definir `err_tol` para interromper quando a soma do ERR atingir o limite, oferecendo alternativa mais rápida aos critérios de informação. Novo exemplo disponível na docs. - **MAJOR**: Nova função base Bernstein, além das opções Polynomial e Fourier. - **MAJOR**: v0.1 do livro "Nonlinear System Identification: Theory and Practice With SysIdentPy". O livro open source serve como documentação robusta do pacote e introdução amigável à identificação de sistemas não lineares e previsão de séries temporais. Há estudos de caso adicionais no livro que não estavam na documentação na época. #### Documentação - Todos os exemplos atualizados para refletir as mudanças da v0.4.0. - Adicionado guia sobre como definir um método customizado de estimação de parâmetros e integrá-lo ao SysIdentPy. - Documentação movida para a branch `gh-pages`. - Definida GitHub Action para construir os docs automaticamente ao fazer push na main. - Remoção de código não utilizado de modo geral. #### Datasets - Datasets agora estão disponíveis em repositório separado. #### Alterações na API - **BREAKING CHANGE**: O método de estimação precisa ser importado e passado na definição do modelo, substituindo a string anterior. Exemplo: use `from sysidentpy.parameter_estimation import LeastSquares` em vez de `"least_squares"`. Isso dá mais flexibilidade e facilita estimadores customizados. Há página específica guiando a migração da v0.3.4 para a v0.4.0. - **BREAKING CHANGE**: O método `fit` do MetaMSS agora requer apenas `X` e `y`, sem necessidade de `fit(X=, y=, X_test=, y_test=)`. - Adicionado suporte ao Python 3.12. - Introduzido o hiperparâmetro `test_size` para definir a proporção de dados de treino usada no ajuste. - Ampla refatoração com melhorias em type hints, docstrings, remoção de código não usado e outras mudanças para suportar novos recursos. ## v0.3.4 ### COLABORADORES - wilsonrljr - dj-gauthier - mtsousa ### ALTERAÇÕES #### Novos Recursos - **MAJOR**: Estimação de Parâmetros via Ridge Regression: - Introdução do algoritmo Ridge para estimação de parâmetros de modelos (Issue #104). Defina `estimator="ridge_regression"` e controle a regularização com `alpha`. Obrigado a @dj-gauthier e @mtsousa pela contribuição. Veja https://www.researchgate.net/publication/380429918_Controlling_chaos_using_edge_computing_hardware para saber como @dj-gauthier utilizou o SysIdentPy em sua pesquisa. #### Alterações na API - Código de `plotting.py` aprimorado com type hints e novas opções de visualização. - Métodos refatorados para resolver avisos futuros do NumPy. - Código refatorado seguindo PEP8. - Estilo "default" definido como padrão para evitar erros em novas versões do matplotlib. #### Datasets - Adicionados os datasets `buck_id.csv` e `buck_valid.csv` ao repositório. #### Documentação - Adicionado exemplo NFIR (Issue #103) mostrando como construir modelos sem regressores de saída passados. - Exemplo de uso do MetaMSS aprimorado. - Continuidade na adição de type hints. - Docstrings melhoradas em toda a base. - Pequenas correções e ajustes gramaticais. - @dj-gauthier sugeriu melhorias extras para a documentação; elas estão em refinamento e serão disponibilizadas em breve. #### Ferramentas de Desenvolvimento - Adicionados hooks de pre-commit. - `pyproject.toml` aprimorado para ajudar contribuidores a configurarem o ambiente. ## v0.3.3 ### COLABORADORES - wilsonrljr - GabrielBuenoLeandro - samirmartins ### ALTERAÇÕES - A versão **v0.3.3** foi lançada com novos recursos, mudanças de API e correções. #### Alterações na API - MAJOR: Framework Multiobjetivo — Affine Information Least Squares (AILS) - Agora é possível usar AILS para estimar parâmetros de modelos NARMAX (e variantes) com abordagem multiobjetivo. - AILS pode ser importado via `from sysidentpy.multiobjective_parameter_estimation import AILS`. - Veja a documentação para detalhes. - Recurso relacionado ao Issue #101. Trabalho fruto de pesquisa de graduação de Gabriel Bueno Leandro sob supervisão de Samir Milani Martins e Wilson Rocha Lacerda Junior. - Diversos métodos novos foram implementados para suportar o recurso (veja `sysidentpy -> multiobjective_parameter_estimation`). - Mudança de API: variável `regressor_code` renomeada para `enconding` para evitar usar o mesmo nome do método `regressor_code` em `narmax_tool`. #### Datasets - DATASET: adicionados `buck_id.csv` e `buck_valid.csv` ao repositório. #### Documentação - DOC: Notebook de Otimização Multiobjetivo mostrando como usar o novo AILS. - DOC: Pequenas adições e correções gramaticais. ## v0.3.2 ### COLABORADORES - wilsonrljr ### ALTERAÇÕES - A versão **v0.3.2** foi lançada com mudanças de API e correções. #### Alterações na API - Major: - Adicionado Akaike Information Criterion corrigido (AICc) no FROLS. Agora é possível usar `aicc` como critério de informação para selecionar a ordem do modelo. - FIX: Issue #114. Substituição de `yhat` por `y` no root relative squared error (obrigado @miroder). - TESTES: Pequenas mudanças removendo cargas de dados desnecessárias. - Remoção de código e comentários não usados. #### Documentação - Docs: Pequenas alterações em notebooks. Método AICc adicionado no exemplo de critérios de informação. ## v0.3.1 ### COLABORADORES - wilsonrljr ### ALTERAÇÕES - A versão **v0.3.1** foi lançada com mudanças de API e correções. #### Alterações na API - MetaMSS retornava o máximo lag do modelo final em vez do lag máximo relacionado a xlag e ylag. Embora não estivesse incorreto (Issue #55), a mudança foi aplicada em todos os métodos. Assim, voltamos a retornar o lag máximo de xlag/ylag. - Mudança de API: método `build_matrix` adicionado em BaseMSS, melhorando legibilidade ao eliminar blocos if/elif/else em cada algoritmo de estrutura. - Mudança de API: adicionados métodos `bic`, `aic`, `fpe` e `lilc` no FROLS. A escolha é feita via dicionário pré-definido, melhorando legibilidade e reduzindo if/elif/else. - TESTES: Adicionados testes para a classe Neural NARX. O problema com PyTorch foi solucionado e agora existem testes para todas as classes de modelos. - Remoção de código e comentários não usados. ## v0.3.0 ### COLABORADORES - wilsonrljr - gamcorn - Gabo-Tor ### ALTERAÇÕES - A versão **v0.3.0** foi lançada com novos recursos, mudanças de API e correções. #### Alterações na API - MAJOR: Suporte a estimadores no AOLS - Agora é possível usar qualquer estimador do SysIdentPy no AOLS. - Refatoração da classe base de seleção de estrutura de modelo, preparando o pacote para novos recursos futuros (multiobjetivo, novas funções base, etc.). Diversos métodos foram reescritos para melhorar funcionalidade e desempenho, facilitando a incorporação de técnicas avançadas de seleção. - Evita herança desnecessária em cada algoritmo de MSS e melhora legibilidade. - Métodos reescritos para eliminar duplicação. - Melhoria geral de legibilidade ao reescrever blocos if/elif/else. - Breaking Change: `X_train`/`y_train` substituídos por `X`/`y` no `fit` do MetaMSS. `X_test`/`y_test` substituídos por `X`/`y` no `predict`. - Mudança de API: adicionada classe BaseBasisFunction (classe abstrata para funções base). - Melhoria: suporte ao Python 3.11. - Aviso de depreciação futura: o usuário deverá definir o estimador e passá-lo para cada algoritmo de seleção em vez de strings. Atualmente `estimator="least_squares"`; na versão 0.4.0 será `estimator=LeastSquares()`. - FIX: Issue #96. Correção com numpy 1.24.* (obrigado @gamcorn). - FIX: Issue #91. Correção na métrica r2_score com arrays 2D. - FIX: Issue #90. - FIX: Issue #88. Correção do erro de previsão one-step-ahead em `SimulateNARMAX` (obrigado, Lalith). - FIX: Correção na seleção de regressores em AOLS. - Fix: Correção na previsão n passos à frente ao passar apenas condição inicial. - FIX: Correção de Visible Deprecation Warning no método `get_max_lag`. - FIX: Correção de aviso de depreciação no exemplo de Extended Least Squares. #### Datasets - DATASET: Adicionado dataset de passageiros aéreos ao repositório. - DATASET: Adicionado dataset de carga hospitalar de São Francisco. - DATASET: Adicionado dataset PV GHI de São Francisco. #### Documentação - DOC: Documentação aprimorada na página Setting Specific Lags, com exemplo para modelos MISO. - DOC: Pequenas adições e correções gramaticais. - DOC: Melhoria de visualização de imagens com mkdocs-glightbox. - Pacotes de desenvolvimento atualizados. ## v0.2.1 ### COLABORADORES - wilsonrljr ### ALTERAÇÕES - A versão **v0.2.1** foi lançada com novos recursos, pequenas mudanças de API e correções. #### Alterações na API - MAJOR: Neural NARX agora suporta CUDA - É possível construir modelos Neural NARX com suporte a CUDA, basta adicionar `device='cuda'` para aproveitar a GPU. - Documentação atualizada com instruções do novo recurso. - Testes: - Agora há testes para quase todas as funções. - Testes de Neural NARX estavam gerando issues com numpy; seriam corrigidos na próxima atualização. - FIX: Modelos NFIR em General Estimators - Correção do suporte a modelos NFIR usando estimadores do sklearn. - O setup agora é gerenciado pelo arquivo pyproject.toml. - Remoção de código não utilizado. #### Documentação - MAJOR: Novo site de documentação - Agora toda a documentação é baseada em Markdown (sem rst). - Uso de MkDocs com o tema Material for MkDocs. - O site possui tema escuro. - Página Contribute com mais detalhes para quem quer colaborar. - Novas seções (Blog, Sponsors etc.). - Muitas melhorias internas. - MAJOR: GitHub Sponsor - Agora é possível apoiar o SysIdentPy tornando-se patrocinador: https://github.com/sponsors/wilsonrljr - Correção de variáveis em docstrings. - Correções de formatação de código. - Ajustes gramaticais menores. - Correções em HTML dos notebooks na documentação. - README atualizado. ## v0.2.0 ### COLABORADORES - wilsonrljr ### ALTERAÇÕES - A versão **v0.2.0** foi lançada com novos recursos, pequenas mudanças de API e correções. #### Alterações na API - MAJOR: Muitos novos recursos para General Estimators - Agora é possível construir modelos General NARX com função base Fourier. - É possível escolher a função base importando de `sysidentpy.basis_function`. Consulte os notebooks de exemplo. - Agora é possível construir modelos General NAR; basta passar `model_type="NAR"`. - Agora é possível construir modelos General NFIR; basta `model_type="NFIR"`. - Agora é possível rodar previsão n-passos à frente usando General Estimators. Antes apenas infinito-passos era permitido. - Polynomial e Fourier são suportadas por enquanto. Novas funções base virão em releases futuras. - Não há mais necessidade de informar o número de entradas. - Docstrings melhoradas. - Correções gramaticais menores. - Várias mudanças internas. - MAJOR: Muitos novos recursos para NARX Neural Network - Agora é possível construir modelos Neural NARX com função base Fourier. - Escolha de função base via `sysidentpy.basis_function`. - Possibilidade de construir modelos Neural NAR. - Possibilidade de construir modelos Neural NFIR. - Agora é possível rodar previsão n-passos à frente usando Neural NARX (antes apenas infinito-passos). - Polynomial e Fourier suportadas inicialmente; novas funções base chegarão em breve. - Não é mais necessário passar o número de entradas. - Docstrings melhoradas. - Correções gramaticais menores. - Muitas mudanças internas. - Major: Suporte a métodos antigos removido. - `sysidentpy.PolynomialNarmax` antigo foi removido. Todos os recursos antigos foram incluídos na nova API, com várias melhorias. - Mudança de API (nova): `sysidentpy.general_estimators.ModelPrediction` - Classe adaptada para suportar General Estimators como classe independente. - `predict`: método base de previsão. Suporta infinity, one-step e n-step ahead com qualquer função base. - `_one_step_ahead_prediction`: previsão 1 passo para qualquer função base. - `_n_step_ahead_prediction`: previsão n-passos para função polinomial. - `_model_prediction`: previsão infinity-step para função polinomial. - `_narmax_predict`: wrapper para modelos NARMAX e NAR. - `_nfir_predict`: wrapper para modelos NFIR. - `_basis_function_predict`: previsão infinity-step para funções base diferentes de polinomial. - `basis_function_n_step_prediction`: previsão n-passos para funções base diferentes de polinomial. - Mudança de API (nova): `sysidentpy.neural_network.ModelPrediction` - Classe adaptada para suportar Neural NARX como classe independente. - Métodos equivalentes aos descritos acima para General Estimators. - Mudança de API: método `fit` do Neural NARX reformulado. - Não é mais necessário converter os dados para tensor antes de chamar `fit`. Mudança de API: argumentos posicionais vs nomeados - Agora todos os parâmetros devem ser passados por nome (keyword arguments) em todas as classes de modelo. - Mudança de API (nova): `sysidentpy.utils.narmax_tools` - Funções auxiliares para obter informações úteis ao construir modelos. Inclui `regressor_code` para ajudar a montar Neural NARX. #### Documentação - DOC: Notebook de Passos Básicos aprimorado com novos detalhes sobre a função de previsão. - DOC: Notebook de NARX Neural Network atualizado com a nova API e recursos. - DOC: Notebook de General Estimators atualizado com a nova API e recursos. - DOC: Correções gramaticais menores, incluindo Issues #77 e #78. - DOC: Correções em HTML dos notebooks na documentação. ## v0.1.9 ### COLABORADORES - wilsonrljr - samirmartins ### ALTERAÇÕES - A versão **v0.1.9** foi lançada com novos recursos, pequenas mudanças de API e correções das novidades da v0.1.7. #### Alterações na API - MAJOR: Algoritmo de Regressão Entrópica - Nova classe ER para construir modelos NARX usando o algoritmo de regressão entrópica. - Apenas Mutual Information KNN implementado nesta versão; pode levar bastante tempo com muitos regressores, portanto atenção ao número de candidatos. - API: `save_load` - Adicionada função para salvar/carregar modelos em arquivo. - API: Adicionados testes para Python 3.9. - Fix: alteração na condição `n_info_values` do FROLS. Agora o valor definido pelo usuário é comparado contra o formato da matriz X em vez do espaço de regressores, corrigindo o uso de Fourier com mais de 15 regressores no FROLS. #### Documentação - DOC: Salvar e Carregar modelos - Adicionado notebook mostrando como usar `save_load`. - DOC: Exemplo de Regressão Entrópica - Notebook simples mostrando o uso de AOLS. - DOC: Exemplo de Função Base Fourier - Notebook mostrando o uso da função Fourier. - DOC: Benchmark de previsão PV - Correção da previsão do AOLS (o exemplo usava `meta_mss`). - DOC: Correções gramaticais menores. - DOC: Correções em HTML nos notebooks da documentação. ## v0.1.8 ### COLABORADORES - wilsonrljr ### ALTERAÇÕES - A versão **v0.1.8** foi lançada com novos recursos e pequenas mudanças de API corrigindo as novidades da v0.1.7. #### Alterações na API - MAJOR: Funções Base em Ensemble - Agora é possível usar diferentes funções base juntas. Por ora, Fourier pode ser combinada com Polynomial de graus distintos. - Mudança de API: parâmetro `ensemble` adicionado às funções base para combinar recursos de diferentes funções. - Fix: previsão n-passos para `model_type="NAR"` funciona corretamente com diferentes horizontes. #### Documentação - DOC: Benchmark de passageiros aéreos - Removido código não utilizado. - Uso dos hiperparâmetros padrão nos modelos SysIdentPy. - DOC: Benchmark de previsão de carga - Removido código não utilizado. - Uso de hiperparâmetros padrão. - DOC: Benchmark de previsão PV - Removido código não utilizado. - Uso de hiperparâmetros padrão. ## v0.1.7 ### COLABORADORES - wilsonrljr ### ALTERAÇÕES - A versão **v0.1.7** foi lançada com grandes mudanças e novos recursos. Há diversas modificações na API e será necessário ajustar o código para aproveitar os novos (e futuros) recursos. Todas as mudanças foram feitas para facilitar expansões futuras. - Do ponto de vista do usuário, as mudanças não são tão disruptivas, mas internamente houve muitas alterações que permitiram novos recursos e correções que seriam difíceis sem isso. Consulte a `página de documentação `__. - Muitas classes foram praticamente reescritas, então recomenda-se olhar os novos exemplos de uso. - A seguir, os principais destaques e depois todas as mudanças de API. #### Alterações na API - MAJOR: Modelos NARX com função base Fourier `Issue63 `__, `Issue64 `__ - É possível escolher a função base importando de `sysidentpy.basis_function`. Veja os notebooks de exemplo. - Polynomial e Fourier são suportadas inicialmente. Novas funções virão nas próximas versões. - MAJOR: Modelos NAR `Issue58 `__ - Já era possível construir NAR polinomiais com alguns hacks. Agora basta definir `model_type="NAR"`. - Não é mais necessário passar vetor de zeros como entrada. - Funciona com qualquer algoritmo de seleção de estrutura (FROLS, AOLS, MetaMSS). - Major: Modelos NFIR `Issue59 `__ - Modelos onde a saída depende apenas das entradas passadas. Antes exigia muito código manual; agora basta `model_type="NFIR"`. - Funciona com qualquer algoritmo de seleção de estrutura. - Major: Selecionar ordem dos lags de resíduos no Extended Least Squares (elag) - Usuários podem selecionar o lag máximo dos resíduos usados no algoritmo, seguindo o grau da função base. - Major: Métodos de análise de resíduos `Issue60 `__ - Funções específicas agora calculam autocorrelação dos resíduos e correlação cruzada, superando limitações anteriores. - Major: Métodos de plotagem `Issue61 `__ - Funções de plot foram separadas dos objetos de modelo, oferecendo mais flexibilidade. - Gráficos de resíduos separados do gráfico de previsão. - Mudança de API: `sysidentpy.polynomial_basis.PolynomialNarmax` está deprecated. Use `sysidentpy.model_structure_selection.FROLS` `Issue64 `__ - Não é mais necessário informar o número de entradas. - Parâmetro `elag` adicionado ao estimador não enviesado. Agora dá para definir lags dos resíduos no Extended Least Squares. - Parâmetro `model_type` permite escolher entre "NARMAX", "NAR" e "NFIR" (padrão "NARMAX"). - Mudança de API: `sysidentpy.polynomial_basis.MetaMSS` está deprecated. Use `sysidentpy.model_structure_selection.MetaMSS` `Issue64 `__ - Não é necessário informar número de entradas. - `elag` adicionado para estimativa não enviesada. - Mudança de API: `sysidentpy.polynomial_basis.AOLS` está deprecated. Use `sysidentpy.model_structure_selection.AOLS` `Issue64 `__ - Mudança de API: `sysidentpy.polynomial_basis.SimulatePolynomialNarmax` está deprecated. Use `sysidentpy.simulation.SimulateNARMAX`. - Mudança de API: introdução de `sysidentpy.basis_function`. Como modelos NARMAX podem usar bases diferentes, um módulo novo facilita a implementação de futuras funções `Issue64 `__. - Cada função base deve possuir métodos `fit` e `predict` para treino e previsão. - Mudança de API: método `unbiased_estimator` movido para Estimators. - Adicionado parâmetro `elag`. - `build_information_matrix` renomeado para `build_output_matrix`. - Mudança de API (nova): `sysidentpy.narmax_base` - Nova base para construção de modelos NARMAX. Classes reescritas para facilitar expansões. - Mudança de API (nova): `sysidentpy.narmax_base.GenerateRegressors` - `create_narmax_code`: cria a codificação base para representar modelos NARMAX, NAR e NFIR. - `regressor_space`: cria a representação codificada. - Mudança de API (nova): `sysidentpy.narmax_base.ModelInformation` - `_get_index_from_regressor_code`: obtém índice do código do modelo no espaço de regressores. - `_list_output_regressor_code`: cria array flatten de regressores de saída. - `_list_input_regressor_code`: idem para entradas. - `_get_lag_from_regressor_code`: obtém lag máximo de um array de regressores. - `_get_max_lag_from_model_code`: idem para um código de modelo. - `_get_max_lag`: obtém lag máximo de ylag e xlag. - Mudança de API (nova): `sysidentpy.narmax_base.InformationMatrix` - `_create_lagged_X`: cria matriz defasada de entradas sem combinações. - `_create_lagged_y`: cria matriz defasada da saída sem combinações. - `build_output_matrix`: constrói a matriz de informação de valores de saída. - `build_input_matrix`: constrói a matriz de informação de entradas. - `build_input_output_matrix`: matriz de informação de entrada e saída. - Mudança de API (nova): `sysidentpy.narmax_base.ModelPrediction` - `predict`: método base de previsão. Suporta infinity, one-step e n-step para qualquer função base. - `_one_step_ahead_prediction`: previsão 1 passo para qualquer função base. - `_n_step_ahead_prediction`: previsão n-passos para base polinomial. - `_model_prediction`: previsão infinity-step para base polinomial. - `_narmax_predict`: wrapper para modelos NARMAX e NAR. - `_nfir_predict`: wrapper para NFIR. - `_basis_function_predict`: previsão infinity-step para bases não polinomiais. - `basis_function_n_step_prediction`: previsão n-passos para bases não polinomiais. - Mudança de API (nova): `sysidentpy.model_structure_selection.FROLS` `Issue62 `__, `Issue64 `__ - Baseada na antiga `PolynomialNARMAX`. A classe foi reconstruída com novas funções e código otimizado. - Argumentos apenas nomeados, promovendo uso claro. - Suporte a novas funções base. - Possibilidade de escolher lags residuais. - Não é necessário informar número de entradas. - Docstring aprimorada. - Correções gramaticais menores. - Novo método de previsão. - Muitas mudanças internas. - Mudança de API (nova): `sysidentpy.model_structure_selection.MetaMSS` `Issue64 `__ - Baseada na antiga `Polynomial_basis.MetaMSS`. Reconstruída com novas funções e código otimizado. - Argumentos apenas nomeados. - Possibilidade de escolher lags residuais. - Suporte a Extended Least Squares. - Suporte a novas bases. - Não é necessário informar número de entradas. - Docstring aprimorada. - Correções gramaticais menores. - Novo método de previsão. - Muitas mudanças internas. - Mudança de API (nova): `sysidentpy.model_structure_selection.AOLS` `Issue64 `__ - Baseada na antiga `AOLS`. Reconstruída com novas funções e código otimizado. - Argumentos apenas nomeados. - Suporte a novas bases. - Não é necessário informar número de entradas. - Docstring aprimorada. - Parâmetro "l" renomeado para "L". - Correções gramaticais menores. - Novo método de previsão. - Muitas mudanças internas. - Mudança de API (nova): `sysidentpy.simulation.SimulateNARMAX` - Baseada na antiga `SimulatePolynomialNarmax`. Reconstruída com novas funções e código otimizado. - Correção do suporte ao Extended Least Squares. - Correção da previsão n-passos e 1-passo à frente. - Argumentos apenas nomeados. - Possibilidade de escolher lags residuais. - Docstring aprimorada. - Correções gramaticais menores. - Novo método de previsão. - Não herda mais do algoritmo de seleção, apenas de `narmax_base`, evitando importações circulares. - Muitas mudanças internas. - Mudança de API (nova): `sysidentpy.residues` - `compute_residues_autocorrelation`: calcula autocorrelação dos resíduos. - `calculate_residues`: obtém resíduos a partir de y e yhat. - `get_unnormalized_e_acf`: autocorrelação não normalizada dos resíduos. - `compute_cross_correlation`: correlação cruzada entre duas séries. - `_input_ccf` - `_normalized_correlation`: correlação normalizada entre dois sinais. - Mudança de API (nova): `sysidentpy.utils.plotting` - `plot_results`: plota previsão. - `plot_residues_correlation`: autocorrelação/correlação cruzada. - Mudança de API (nova): `sysidentpy.utils.display_results` - `results`: retorna regressores do modelo, parâmetros estimados e índice ERR em uma tabela. #### Documentação - DOC: Benchmark de passageiros aéreos `Issue65 `__ - Notebook adicionado comparando SysIdentPy a prophet, neuralprophet, autoarima, tbats e outros. - DOC: Benchmark de previsão de carga `Issue65 `__ - Notebook adicionado. - DOC: Benchmark de previsão PV `Issue65 `__ - Notebook adicionado. - DOC: Apresentação das funcionalidades principais - Exemplo reescrito conforme a nova API. - Correções gramaticais menores. - DOC: Uso com múltiplas entradas - Exemplo reescrito conforme a nova API. - Correções gramaticais menores. - DOC: Critérios de Informação — Exemplos - Exemplo reescrito conforme a nova API. - Correções gramaticais menores. - DOC: Notas importantes e exemplos de como usar Extended Least Squares - Exemplo reescrito conforme a nova API. - Correções gramaticais menores. - DOC: Definindo lags específicos - Exemplo reescrito conforme a nova API. - Correções gramaticais menores. - DOC: Estimação de Parâmetros - Exemplo reescrito conforme a nova API. - Correções gramaticais menores. - DOC: Uso do MetaMSS para construir modelos NARX polinomiais - Exemplo reescrito conforme a nova API. - Correções gramaticais menores. - DOC: Uso do AOLS para construir modelos NARX polinomiais - Exemplo reescrito conforme a nova API. - Correções gramaticais menores. - DOC: Exemplo: benchmark de vibração do F-16 - Exemplo reescrito conforme a nova API. - Correções gramaticais menores. - DOC: Construindo Neural NARX com o SysIdentPy - Exemplo reescrito conforme a nova API. - Correções gramaticais menores. - DOC: Construindo modelos NARX usando estimadores gerais - Exemplo reescrito conforme a nova API. - Correções gramaticais menores. - DOC: Simular um modelo predefinido - Exemplo reescrito conforme a nova API. - Correções gramaticais menores. - DOC: Identificação de sistemas usando filtros adaptativos - Exemplo reescrito conforme a nova API. - Correções gramaticais menores. - DOC: Identificação de um sistema eletromecânico - Exemplo reescrito conforme a nova API. - Correções gramaticais menores. - DOC: Exemplo: previsão n-passos — benchmark F-16 - Exemplo reescrito conforme a nova API. - Correções gramaticais menores. - DOC: Introdução aos modelos NARMAX - Correções gramaticais e ortográficas. ## v0.1.6 ### COLABORADORES - wilsonrljr ### ALTERAÇÕES #### Alterações na API - MAJOR: Algoritmo Meta-Model Structure Selection (Meta-MSS). - Novo método para construir modelos NARMAX com base em metaheurísticas. O algoritmo usa um híbrido binário PSO/GSA com nova função de custo para gerar modelos parcimoniosos. - Nova classe para o algoritmo BPSOGSA. Outros algoritmos podem ser adaptados ao framework Meta-MSS. - Atualizações futuras incluirão modelos NARX para classificação e seleção multiobjetivo. - MAJOR: Algoritmo Accelerated Orthogonal Least-Squares. - Nova classe AOLS para construir modelos NARX usando o algoritmo AOLS. - Pelo que se sabe, é a primeira aplicação do algoritmo no framework NARMAX. Os testes preliminares são promissores, mas recomenda-se cautela até formalização em artigo. #### Documentação - Notebook adicionado com exemplo simples do MetaMSS e comparação no sistema eletromecânico. - Notebook adicionado com exemplo simples do AOLS. - Adicionada classe ModelInformation. Ela possui métodos para retornar informações do modelo, como `max_lag`. - `_list_output_regressor_code` - `_list_input_regressor_code` - `_get_lag_from_regressor_code` - `_get_max_lag_from_model_code` - Pequena melhoria de performance: argumento "predefined_regressors" adicionado em `build_information_matrix` no `base.py` para acelerar o método de simulação. - Pytorch agora é dependência opcional. Use `pip install sysidentpy['full']`. - Correções de formatação de código. - Correções gramaticais menores. - Correções em HTML nos notebooks da documentação. - README atualizado com exemplos. - Descrições e comentários aprimorados. - `metaheuristics.bpsogsa` (detalhes nas docstrings) - `evaluate_objective_function` - `optimize` - `generate_random_population` - `mass_calculation` - `calculate_gravitational_constant` - `calculate_acceleration` - `update_velocity_position` - FIX issue #52 ## v0.1.5 ### COLABORADORES - wilsonrljr ### ALTERAÇÕES #### Alterações na API - MAJOR: Previsão n-passos à frente. - Agora é possível definir o número de passos à frente no método `predict`. - Disponível para modelos polinomiais por enquanto. Próxima atualização trará o recurso para Neural NARX e General Estimators. - MAJOR: Simulação de modelos predefinidos. - Nova classe `SimulatePolynomialNarmax` para simular estruturas conhecidas. - Agora é possível simular modelos predefinidos apenas passando a codificação da estrutura. Veja os notebooks. - Correções de formatação de código. - Novos testes para `SimulatePolynomialNarmax` e `generate_data`. - Iniciadas mudanças relacionadas ao numpy 1.19.4. Ainda restam alguns avisos de depreciação a serem corrigidos. #### Documentação - Adicionados 4 novos notebooks na seção de exemplos. - Adicionados notebooks iterativos. Agora é possível rodá-los no Colab direto da documentação. - Correções em HTML nos notebooks da documentação. - README atualizado com exemplos. ## v0.1.4 ### COLABORADORES - wilsonrljr ### ALTERAÇÕES #### Alterações na API - MAJOR: Introdução da NARX Neural Network no SysIdentPy. - Agora é possível construir redes Neural NARX no SysIdentPy. - O recurso é baseado em PyTorch. Veja os docs para detalhes e exemplos. - MAJOR: Introdução de estimadores gerais no SysIdentPy. - Agora é possível usar qualquer estimador com métodos Fit/Predict (Sklearn, CatBoost etc.) para construir modelos NARX. - Aproveitamos as funções centrais do SysIdentPy mantendo a interface Fit/Predict para facilitar o uso. - Mais estimadores virão em breve, como XGBoost. - Parâmetros padrão da função `plot_results` foram alterados. #### Documentação - Adicionados notebooks mostrando como construir Neural NARX. - Adicionados notebooks mostrando como construir modelos NARX com estimadores gerais. - Novo template para o site de documentação. - Correções em HTML nos notebooks da documentação. - README atualizado com exemplos. - NOTA: Continuaremos aprimorando os modelos NARX polinomiais (novos algoritmos de seleção e identificação multiobjetivo estão no roadmap). As modificações recentes permitem introduzir novos modelos como PWARX em breve. ## v0.1.3 ### COLABORADORES - wilsonrljr - renard162 ### ALTERAÇÕES #### Alterações na API - Correção de bug relacionado a `xlag` e `ylag` em cenários com múltiplas entradas. - Função `predict` refatorada. Desempenho melhorado em até 87% conforme o número de regressores. - Agora é possível definir lags de tamanhos diferentes para cada entrada. - Adicionada função para obter o valor máximo de `xlag` e `ylag`. Funciona com int, lista e listas aninhadas. - Correção de testes para critérios de informação. - Código de todas as classes refatorado seguindo PEP8 para melhorar legibilidade. - Ajustes nos testes de critérios de informação. - Adicionado workflow para rodar testes ao fazer merge na master. #### Documentação - Adicionado o logo do SysIdentPy. - Inserida informação de citação no README. - Novo domínio do site adicionado. - Documentação atualizada.