Regressão Polinomial de Alta Precisão via Mínimos Quadrados com mpmath
Project description
MMQRegressor
Solução robusta para o Método dos Mínimos Quadrados em Python, projetada para ajustar polinômios de grau elevado (10+) sem divergência numérica. Utiliza aritmética de precisão arbitrária, correção automática para falta de dados e estabilização de matrizes mal-condicionadas.
🎯 O Problema
Bibliotecas padrão como NumPy utilizam aritmética de ponto flutuante (float64). Ao ajustar polinômios de grau alto (ex.: grau 10) ou trabalhar com valores muito grandes (ex.: 2000^10), ocorrem:
Overflow / Underflow
Perda catastrófica de precisão
Coeficientes sem sentido
RankWarning (matriz quase singular)
🚀 A Solução: MMQRegressor
O MMQRegressor resolve esses problemas substituindo floats por objetos de precisão arbitrária usando mpmath. Isso permite cálculos com 50, 100, 200+ casas decimais, garantindo estabilidade mesmo em matrizes de Vandermonde extremamente mal-condicionadas.
🔥 Principais Diferenciais
⚡ Precisão Infinita
Não depende de float64.
Você escolhe a precisão (ex.: 200 casas decimais).
🛡️ Blindagem Numérica (Data Augmentation)
Detecta automaticamente falta de dados (sistema indeterminado).
Gera micro-variações sintéticas (jittering) para permitir o cálculo sem distorcer a curva.
🔧 Regularização Ridge Automática
Aplica Tikhonov somente quando necessário (matriz singular).
📊 Normalização Interna
Normaliza dados via Z-score automaticamente:
𝑧
𝑥 − 𝜇 𝜎 z= σ x−μ
Melhora a estabilidade sem intervenção do usuário.
📦 Instalação
git clone https://github.com/seu-usuario/mmq-regressor.git cd mmq-regressor pip install -r requirements.txt
🛠️ Como Usar
A API segue o padrão Scikit-Learn (fit / predict).
Exemplo 1 — Teste de Estresse (Grau Alto) from mmq_regressor import MMQRegressor
Dados que normalmente quebrariam o NumPy devido à magnitude (2015^10)
x = [2010, 2011, 2012, 2013, 2014, 2015] y = [10, 12, 15, 18, 22, 28]
1. Inicializa com alta precisão (100 casas decimais)
Grau 7 com apenas 6 pontos ativa automaticamente o Data Augmentation
modelo = MMQRegressor(grau=7, precision=100)
2. Treinamento
coeficientes = modelo.fit(x, y)
print("Ajuste concluído com sucesso!") print(f"Coeficientes: {coeficientes}")
3. Previsão na escala original
previsao = modelo.predict(2016)
print(f"Previsão para 2016: {previsao:.4f}")
📋 Dependências
Python 3.8+
numpy — operações vetoriais
mpmath — núcleo de alta precisão
📄 Licença
Este projeto está licenciado sob a MIT License. Consulte o arquivo LICENSE para mais detalhes.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mmq_high_precision-0.1.0.tar.gz.
File metadata
- Download URL: mmq_high_precision-0.1.0.tar.gz
- Upload date:
- Size: 5.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3dd53cf428418c0248febc89481d7d55c9fa59a1675061d0fe7674bf8f69f386
|
|
| MD5 |
dd2196391ec9cf936954a5381855b400
|
|
| BLAKE2b-256 |
185ecd7f29c71e23ee702e1e56f59a5970b78103b24a56b811050dc9785c7311
|
File details
Details for the file mmq_high_precision-0.1.0-py3-none-any.whl.
File metadata
- Download URL: mmq_high_precision-0.1.0-py3-none-any.whl
- Upload date:
- Size: 6.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8ba1060cd0316fd92a92abe6cd322bf7dbc65418c67a7c9fc8f24e99adc243f4
|
|
| MD5 |
4f29b5a6f4f220b86a0e6abde3594aed
|
|
| BLAKE2b-256 |
5e5987d817d8ed154b4d1fd8734ea769d951c2da8d8e056438198baad155f408
|