Skip to content
Back to skills

Ml Eval Report

ASecurity

Gera relatorio de avaliacao de modelo ML com metricas, graficos e comparacao. Triggers on /ml-eval-report.

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 26, 2026
datapythongogit

Works with

  • terminal
  • cli

Security analysis

A100/100

Scanned September 26, 2026

npx -y skills add labdaps/labskills --skill ml-eval-report --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Ml Eval Report?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Ml Eval Report
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/labdaps-ml-eval-report/badge)](https://www.skillsdirectory.com/skills/labdaps-ml-eval-report)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: ml-eval-report
description: Gera relatorio de avaliacao de modelo ML com metricas, graficos e comparacao. Triggers on /ml-eval-report.
---

# Skill: ml-eval-report

Gera relatorio completo de avaliacao de modelo de Machine Learning.

As regras de metrica, ponto de corte, calibracao e interpretabilidade sao da skill `ml-checkpoints` (CP8 a CP10), a norma do laboratorio; esta skill monta o relatorio a partir das decisoes registradas no `pipeline-decisions.md` do projeto. O porque de cada regra esta em `docs/aprendizados-pipeline-agentes.md`, no ai-lab-hub.

## Passos

### 1. Identificar modelo e dados

- Localizar modelo treinado (pickle/joblib) ou codigo de treinamento
- Identificar conjunto de teste (X_test, y_test)
- Verificar tipo de problema: classificacao binaria, multiclasse, regressao
- Ler no `pipeline-decisions.md` a metrica principal e o ponto de corte escolhidos no CP8

### 2. Gerar predicoes

```python
y_prob = model.predict_proba(X_test)[:, 1]  # para classificacao
# corte: o ponto de corte registrado no CP8, fixado no treino pelo custo
# clinico. Nunca model.predict(), que classifica no 0,5 implicito.
y_pred = (y_prob >= corte).astype(int)
```

### 3. Metricas - Classificacao binaria

```python
from sklearn.metrics import (
    roc_auc_score, average_precision_score,
    classification_report, brier_score_loss,
    confusion_matrix
)
```

Tabela de metricas, todas com IC95% (bootstrap ou variacao entre folds). A metrica principal e a do CP8, escolhida antes de rodar; acuracia fica de fora, porque em desfecho raro ela e alta sem o modelo acertar nada (CP5):
| Metrica | Valor | IC95% |
|---------|-------|-------|
| Metrica principal (CP8) | | |
| AUROC | | |
| AUPRC | | |
| Sensibilidade no corte do CP8 | | |
| Especificidade no corte do CP8 | | |
| F1-Score no corte do CP8 | | |
| Brier Score | | |
| Slope e intercepto de calibracao | | |

### 4. Graficos

Gerar e salvar em `results/`:
1. **ROC Curve** com AUC no titulo
2. **Precision-Recall Curve** com AP no titulo
3. **Confusion Matrix** (heatmap)
4. **Calibration Plot** (observed vs predicted)
5. **Feature Importance** (top 20)
6. **SHAP com direcao** (beeswarm ou summary), obrigatorio em saude (CP10): se o `shap` nao estiver instalado, instale em vez de pular
7. **Decision curve**, quando o CP8 a escolheu

### 5. Comparacao de modelos (se aplicavel)

Se houver multiplos modelos, gerar tabela comparativa e grafico de barras.

### 6. Salvar relatorio

- Metricas em `results/metrics.json`
- Graficos em `results/figures/`
- Print resumo no terminal

## Convencoes do LABDAPS (lab-ai-prediction)

No app de referencia do laboratorio ([lab-ai-prediction](https://github.com/fabianofilho/lab-ai-prediction)) a avaliacao ja esta pronta em `core/models/evaluation.py`, com graficos **Plotly** (interativos, nao matplotlib). Reuse essas funcoes em vez de reimplementar. O datasus-ai-prediction e uma linhagem arquivada.

### Use as out-of-fold probs
O `train_cv` devolve `oof_probs`. Todos os graficos recebem `(y_true, oof_probs)`, nao predicao no treino.

```python
from core.models import evaluation as ev

ev.roc_chart(y, res["oof_probs"])
ev.pr_chart(y, res["oof_probs"])
ev.calibration_chart(y, res["oof_probs"], n_bins=10)
ev.threshold_curve_chart(y, res["oof_probs"])
ev.importance_chart(res["feature_importances"], top_n=20)
ev.fold_metrics_table(res["fold_metrics"])
```

### Explicabilidade (SHAP) e obrigatoria em saude
```python
ev.shap_summary(res["model"], X)        # importancia global
ev.shap_beeswarm(res["model"], X)       # direcao do efeito
ev.shap_waterfall_chart(res["model"], X, case_idx=0)  # explicacao de um caso
```

### Equidade: metricas por subgrupo
Modelo clinico precisa ser auditado por subgrupo (sexo, raca/cor, faixa etaria, regiao). Nao reporte so a metrica agregada, e liste os subgrupos que a tabela omitiu.
```python
ev.subgroup_metrics_table(y, res["oof_probs"], groups)  # AUROC e AUPRC por grupo; omite grupo com N < 20 ou sem evento
ev.threshold_metrics(y, res["oof_probs"], threshold=corte)  # corte do CP8, nunca o default 0,5
```

### Comparacao entre estados/periodos
Para checar transportabilidade do modelo entre UFs ou anos:
```python
ev.metrics_comparison_table(comparison_results)
ev.calibration_comparison_chart(...)
ev.shap_comparison_chart(...)
```

### O que sempre reportar
A metrica principal do CP8 com IC, AUROC e AUPRC, **Brier antes e depois da calibracao**, calibracao visual, SHAP global com direcao, e a tabela de metricas por subgrupo. AUROC alto sem calibracao e sem analise de equidade nao basta para um modelo de risco em saude.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…