📦 Auto-Ensemble-Benchmark
🔬 Benchmark automático de modelos ensemble para classificação — métricas padronizadas, ranking e validação cruzada
Sumário
Visão geral
auto-ensemble-benchmark é uma biblioteca Python projetada para automatizar a comparação de classificadores ensemble por meio de métricas padronizadas, rankings por métrica, ranking agregado e validação cruzada. O objetivo é proporcionar um fluxo reprodutível e científico para:
- Treinar e avaliar múltiplos ensembles baseline (RandomForest, ExtraTrees, GradientBoosting, AdaBoost, Bagging com RF).
- Calcular métricas padrão (accuracy, f1, recall, precision) com suporte a médias para problemas multiclasse/binário.
- Gerar colunas de ranking por métrica e um
overall_rankagregador. - Executar validação cruzada estratificada retornando média e desvio-padrão.
- Persistir resultados em CSV para documentação experimental e relatórios científicos.
Aplicações típicas: pesquisa acadêmica (benchmarks reprodutíveis), avaliação de baselines por cientistas de dados, provas de conceito rápidas em conjuntos de dados variados.
Instalação
Via PyPI (recomendado)
pip install auto-ensemble-benchmark
Observação: a versão publicada atualmente é
0.1.1. Usepip install --upgrade auto-ensemble-benchmarkpara atualizar.
Modo desenvolvimento (instalação local)
git clone https://github.com/ViniciusKanh/auto-ensemble-benchmark.git
cd auto-ensemble-benchmark
# criar ambiente virtual (exemplo)
python -m venv .venv
# Windows
.venv\Scripts\activate
# macOS / Linux
source .venv/bin/activate
pip install -e .
Exemplos de uso
Todos os exemplos assumem importações padrão do
scikit-learn. Comentários dos trechos de código estão em Português.
Exemplo rápido — hold-out
# Exemplo mínimo: hold-out com dataset wine
from sklearn.datasets import load_wine
from sklearn.model_selection import train_test_split
from auto_ensemble_benchmark import AutoEnsembleClassifier
# Carrega dados
data = load_wine()
X, y = data.data, data.target
# Particiona treino/teste
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.3, random_state=42, stratify=y
)
# Instancia o avaliador automático (padrões)
auto = AutoEnsembleClassifier(
primary_metric="accuracy", # métrica principal para ranking
add_rank_columns=True, # inclui colunas de ranking
random_state=42,
n_jobs=-1
)
# Treina e avalia (treina nos dados de treino e avalia no hold-out)
df_holdout = auto.fit_evaluate(X_train, y_train, X_test, y_test, media="macro")
# Resultado: DataFrame com métricas e rankings
print(df_holdout)
# Sumário interpretável
print(auto.summarize_results(top_k=3))
Validação cruzada (CV) — estimativa robusta
# Avaliação com validação cruzada estratificada
df_cv = auto.fit_evaluate_cv(
X, y,
cv=5,
media="macro",
random_state_cv=123,
shuffle=True
)
# df_cv contém <metrica>_mean e <metrica>_std para cada modelo
print(df_cv)
Uso avançado — sobrescrita de hiperparâmetros e salvamento automático
auto = AutoEnsembleClassifier(
metricas=["accuracy", "f1", "recall", "precision"],
primary_metric="f1",
model_overrides={
"RandomForest": {"n_estimators": 500, "max_depth": None},
"ExtraTrees": {"n_estimators": 800},
},
output_dir="resultados_bench",
experiment_name="exp_v1",
save_on_evaluate=True,
save_on_cv=True
)
df_holdout = auto.fit_evaluate(X_train, y_train, X_test, y_test, media="macro")
# Arquivos gerados:
# resultados_bench/exp_v1_holdout_results.csv
# resultados_bench/exp_v1_cv_results.csv
Explicação dos resultados e formato dos arquivos
A biblioteca retorna pandas.DataFrame com as colunas descritas abaixo. Caso save_on_* esteja ativado, gera CSVs contendo as mesmas informações, mais metadados.
Colunas de métricas (hold-out)
accuracy— fração de previsões corretas.f1— pontuação F1 (dependente demediapara problemas multiclasse).recall— sensibilidade (TP / (TP + FN)).precision— precisão (TP / (TP + FP)).
Todas as métricas seguem a API do
scikit-learn. Use o parâmetromediapara ajustar o cálculo ("binary","macro","micro","weighted").
Colunas de ranking
rank_accuracy,rank_f1,rank_recall,rank_precision— posição ordinal por métrica (1 = melhor).overall_rank— soma das posições das métricas consideradas; menor valor indica melhor desempenho agregado.
Nota interpretativa: overall_rank é um agregador de ordens e serve como critério sumarizador. Ele não substitui testes estatísticos de significância entre modelos.
Validação cruzada (CV)
Saída de fit_evaluate_cv possui colunas:
<metrica>_mean— média da métrica nas folds.<metrica>_std— desvio-padrão entre folds (medida de estabilidade).
Use *_std para examinar robustez: elevado desvio indica sensibilidade a particionamentos.
Arquivos gerados
{output_dir}/{experiment_name}_holdout_results.csv— resultados do hold-out.{output_dir}/{experiment_name}_cv_results.csv— resultados da validação cruzada.
Os CSVs incluem colunas: modelo, métricas, colunas de ranking, parâmetros aplicados (se sobrescritos), timestamp de execução.
Interpretação metodológica e recomendações
-
Seleção da métrica principal (
primary_metric)- Para dados desbalanceados, priorize
f1(ourecall/precisionconforme custo de falsos negativos/positivos). - Para problemas multiclasse, utilize
media="macro"e prefiraf1como métrica agregada.
- Para dados desbalanceados, priorize
-
Hold-out vs CV
- Hold-out é adequado para inspeção e diagnóstico rápidos.
- Validação cruzada fornece estimativas mais estáveis e deve ser usada para relatórios científicos ou quando o conjunto de dados é pequeno.
-
Estabilidade vs desempenho pontual
- Compare
*_meancom*_stdna CV. Um modelo com média ligeiramente inferior, mas menor desvio, pode ser preferível pela maior robustez.
- Compare
-
Comparações estatísticas
- Ao comparar top-k modelos, realize testes pareados (ex.: Wilcoxon, t-test pareado dependendo da normalidade) sobre as métricas nas folds. Use correção para múltiplos testes quando necessário.
-
Reprodutibilidade
- Defina
random_stateerandom_state_cvquando for reportar resultados; versione scripts e CSVs de saída para rastreabilidade.
- Defina
API — referência sucinta
AutoEnsembleClassifier(
modelos=None,
metricas=None,
primary_metric="accuracy",
add_rank_columns=True,
random_state=42,
n_jobs=-1,
model_overrides=None,
output_dir=None,
experiment_name=None,
save_on_evaluate=False,
save_on_cv=False,
)
Métodos principais
fit(X_train, y_train)— treina todos os modelos.evaluate(X_test, y_test, media="auto")— avalia modelos no conjunto de teste.fit_evaluate(X_train, y_train, X_test, y_test, media="auto")— atalho: treina e avalia.fit_evaluate_cv(X, y, cv=5, media="auto", random_state_cv=42, shuffle=True)— executa CV estratificada.get_results()— retornaDataFramedos últimos resultados hold-out.get_results_cv()— retornaDataFramedos últimos resultados de CV.summarize_results(top_k=3)— resumo textual dos top-k modelos (métrica principal).
Implementações de modelos padrão:
RandomForestClassifier,ExtraTreesClassifier,GradientBoostingClassifier,AdaBoostClassifier,BaggingClassifier(base_estimator=RandomForest).
Licença
Distribuído sob licença MIT — consulte o arquivo LICENSE para termos completos.
Sobre o autor
Vinicius de Souza Santos Pesquisador em Ciência da Computação (UNESP) — ênfase em Machine Learning, Feature Selection e experimentação empírica.
- GitHub: https://github.com/ViniciusKanh
- LinkedIn: https://www.linkedin.com/in/vinicius-souza-santoss/
- E-mail profissional: vinicius-souza.santos@unesp.br
Resumo das competências: concepção e execução de benchmarks reprodutíveis, validação cruzada estratificada, experimentação empírica com scikit-learn, engenharia de pipelines de avaliação.
Changelog curto
- 0.1.1 — Release inicial publicada no PyPI (funcionalidades básicas: treino/eval de ensembles, métricas, ranking, CV e persistência CSV).
Notas finais
Este projeto foi desenvolvido com a proposta de oferecer uma biblioteca simples, transparente e científica para benchmark automatizado de modelos ensemble, focando em reprodutibilidade, rigor estatístico e facilidade de uso para pesquisadores, estudantes e profissionais da área.
Metadata
Release files for auto-ensemble-benchmark 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| auto_ensemble_benchmark-0.1.2.tar.gz | 14.7 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| auto_ensemble_benchmark-0.1.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 26.9 kB
Release files / auto_ensemble_benchmark-0.1.2.tar.gz
| Download URL | auto_ensemble_benchmark-0.1.2.tar.gz |
|---|---|
| Size | 14.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f7704b92cb24428e9e2a2c3b5d15edca983bf5076e9ef4c0f4dfa023e54f64b2
|
|
BLAKE2b-256 checksum How to use checksums |
830b44fea1445e56c9584b6b898db5b98fb35751ebaf8f97ea75551a9fecbb3b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.0
|
Release files / auto_ensemble_benchmark-0.1.2-py3-none-any.whl
| Download URL | auto_ensemble_benchmark-0.1.2-py3-none-any.whl |
|---|---|
| Size | 12.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
66d6d30ca557a8063999fa65d8f05ec01975fe87df24dd099c38a745455f3609
|
|
BLAKE2b-256 checksum How to use checksums |
55a92508e77e2aabcdb62ac8254238b2df0d8a2ec49c487193af72dec8a56e82
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.0
|
Security for auto-ensemble-benchmark 0.1.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.