Spaces:
Sleeping
Sleeping
| """ | |
| Dataclass tipada para os dados do modelo de avaliação. | |
| Os dados são carregados de arquivos .dai (joblib). | |
| """ | |
| from dataclasses import dataclass, field | |
| from typing import Dict, List, Any, Optional | |
| from pathlib import Path | |
| import pandas as pd | |
| class ModelData: | |
| """Representa os dados estatísticos de um modelo de avaliação.""" | |
| nome: str | |
| path: Path | |
| # Dados do banco de dados | |
| xy_preview: pd.DataFrame = field(default_factory=pd.DataFrame) | |
| top_x_esc: pd.DataFrame = field(default_factory=pd.DataFrame) | |
| top_y_esc: pd.Series = field(default_factory=pd.Series) | |
| # Estatísticas descritivas | |
| estatisticas: pd.DataFrame = field(default_factory=pd.DataFrame) | |
| # Modelo de regressão | |
| tabelas_coef: pd.DataFrame = field(default_factory=pd.DataFrame) | |
| tabelas_obs_calc: pd.DataFrame = field(default_factory=pd.DataFrame) | |
| modelos_resumos: Dict[str, Any] = field(default_factory=dict) | |
| modelos_sm: Any = None # RegressionResultsWrapper | |
| # Transformações e gráficos | |
| formatted_top_transformation_info: List[Any] = field(default_factory=list) | |
| graf_model: str = "" | |
| def r2(self) -> Optional[float]: | |
| """Retorna o coeficiente de determinação R².""" | |
| return self.modelos_resumos.get('r2') | |
| def r2_ajustado(self) -> Optional[float]: | |
| """Retorna o R² ajustado.""" | |
| return self.modelos_resumos.get('r2_ajustado') | |
| def equacao(self) -> Optional[str]: | |
| """Retorna a equação do modelo.""" | |
| return self.modelos_resumos.get('equacao') | |
| def variaveis(self) -> List[str]: | |
| """Retorna lista de variáveis do modelo.""" | |
| if self.tabelas_coef.empty: | |
| return [] | |
| return [v for v in self.tabelas_coef.index.tolist() if v != 'const'] | |
| def n_amostras(self) -> int: | |
| """Retorna número de amostras no banco de dados.""" | |
| return self.modelos_resumos.get('n', 0) | |
| def n_variaveis(self) -> int: | |
| """Retorna número de variáveis do modelo.""" | |
| return self.modelos_resumos.get('k', 0) | |
| def tem_template(self) -> bool: | |
| """Verifica se existe template de metodologia.""" | |
| template_path = self.path / "metodologia.docx" | |
| return template_path.exists() | |
| def get_template_path(self) -> Optional[Path]: | |
| """Retorna caminho do template de metodologia.""" | |
| template_path = self.path / "metodologia.docx" | |
| return template_path if template_path.exists() else None | |