# Implementação da Equação do Modelo como Artefato JSON ## Visão Geral Esta implementação adiciona a capacidade de extrair e salvar a equação do modelo de regressão linear como um artefato JSON, seguindo a arquitetura existente do projeto. ## Mudanças Implementadas ### 1. TrainModelResult - **Arquivo**: `model_manager/utils/models/train_model_result.py` - **Mudanças**: - Adicionado campo `equation: dict | None = None` para armazenar os metadados da equação - Adicionado campo `equation_path: str | None = None` para armazenar o caminho do arquivo JSON ### 2. TrainingRepository - **Arquivo**: `model_manager/utils/repository/training_repository.py` - **Mudanças**: - Adicionado método `_extract_model_equation()` para extrair coeficientes e intercept do modelo - Integrado a extração da equação no método `after_train_calculation()` ### 3. ModelRepository - **Arquivo**: `model_manager/utils/repository/model_repository.py` - **Mudanças**: - Adicionado import do módulo `json` - Modificado `_generate_report()` para salvar a equação como arquivo JSON - Modificado `_save_run()` para fazer log do artefato da equação no MLflow ## Estrutura do JSON da Equação O arquivo `model_equation.json` terá a seguinte estrutura: ```json { "target_variable": "target_column_name", "coefficients": { "feature1": 0.123456, "feature2": -0.789012, "feature3": 0.345678 }, "intercept": 1.234567, "equation_string": "target_column_name = 1.234567 + 0.123456 * feature1 + -0.789012 * feature2 + 0.345678 * feature3", "latex_equation": "target_column_name = 1.234567 + 0.123456 \\cdot feature1 + -0.789012 \\cdot feature2 + 0.345678 \\cdot feature3", "model_type": "Linear Regression" } ``` ## Fluxo de Execução 1. **Treinamento**: O modelo é treinado no `TrainingRepository.train()` 2. **Pós-treinamento**: O método `after_train_calculation()` é chamado, que: - Calcula as métricas (MSE, MAE, R²) - Extrai a equação usando `_extract_model_equation()` 3. **Salvamento**: O `ModelRepository.save_model()` é chamado, que: - Gera os artefatos (relatórios, dados CSV) - Salva a equação como `model_equation.json` - Faz log de todos os artefatos no MLflow ## Benefícios - **Rastreabilidade**: A equação fica disponível como artefato versionado no MLflow - **Transparência**: Fácil acesso aos coeficientes e estrutura do modelo - **Compatibilidade**: Formato JSON facilita integração com outras ferramentas - **Flexibilidade**: Inclui tanto formato legível quanto LaTeX para diferentes usos ## Compatibilidade Esta implementação é totalmente compatível com: - A arquitetura existente do projeto - O fluxo de treinamento atual - O sistema de logging do MLflow - Os testes existentes (não quebra funcionalidades) ## Exemplo de Uso Após o treinamento, a equação estará disponível em: - **Memória**: `train_result.equation` (dicionário Python) - **Arquivo**: `train_result.equation_path` (caminho para o JSON) - **MLflow**: Como artefato `model_equation.json` no run do experimento