Skip to main content

Ferramenta para determinar a proporção ideal de dados sintéticos em modelos de ML

Project description

🎯 DataTunner

Otimização Automática de Proporções de Dados Sintéticos para Modelos de Deep Learning

License: MIT Python 3.8+

📖 Sobre

DataTunner é uma ferramenta Python de código aberto que automatiza o processo de determinação da proporção ideal de dados sintéticos para maximizar a performance de modelos de redes neurais.

A crescente demanda por grandes volumes de dados para treinamento de modelos de Deep Learning tem impulsionado o uso de dados sintéticos como solução para escassez e desbalanceamento de datasets. O DataTunner sistematiza esse processo, que tradicionalmente é empírico e não estruturado.

✨ Características Principais

  • 🔄 Geração Automática de Datasets Híbridos: Combina dados reais e sintéticos em diferentes proporções
  • 🖼️ Suporte a Imagens: CNNs (ResNet, VGG, MobileNet) com data augmentation
  • 📊 Suporte a Dados Tabulares: MLPs, Random Forest, XGBoost com SMOTE e CTGAN
  • 📈 Métricas Abrangentes: Accuracy, Precision, Recall, F1-Score, ROC-AUC
  • 🎨 Visualizações Ricas: Gráficos interativos e relatórios detalhados
  • 🔬 Reprodutibilidade Garantida: Seeds fixas e hiperparâmetros controlados
  • Suporte a GPU: Aceleração via CUDA
  • 💾 Checkpointing: Retome experimentos interrompidos

🚀 Instalação

Instalação Básica

pip install datatunner

Instalação para Desenvolvimento

git clone https://github.com/leandro-rocha/datatunner.git
cd datatunner
python -m venv venv
source venv/bin/activate  # Windows: venv\Scripts\activate
pip install -e ".[dev]"

📚 Guia Rápido

Exemplo com Imagens (CIFAR-10)

from datatunner import DataTunner
from datatunner.models.cnn import ResNetClassifier
from datatunner.generators.augmentation import ImageAugmentation

# Configurar o otimizador
tunner = DataTunner(
    data_type='image',
    real_data_path='data/cifar10/real',
    synthetic_data_path='data/cifar10/synthetic',
    output_dir='results/cifar10'
)

# Definir modelo
model = ResNetClassifier(num_classes=10, architecture='resnet18')

# Executar otimização
results = tunner.optimize(
    model=model,
    proportions=[0.0, 0.1, 0.2, 0.3, 0.5, 0.7, 1.0],
    epochs=50,
    batch_size=64,
    n_trials=3  # Repetições para robustez
)

# Visualizar resultados
tunner.plot_results()
print(f"Melhor proporção: {results['best_proportion']}")

Exemplo com Dados Tabulares

from datatunner import DataTunner
from datatunner.models.mlp import MLPClassifier
from datatunner.generators.smote import SMOTEGenerator

# Configurar o otimizador
tunner = DataTunner(
    data_type='tabular',
    real_data_path='data/adult/train.csv',
    test_data_path='data/adult/test.csv',
    output_dir='results/adult'
)

# Gerar dados sintéticos com SMOTE
generator = SMOTEGenerator(k_neighbors=5)
synthetic_data = generator.generate(data=tunner.real_data, n_samples=5000)

# Definir modelo
model = MLPClassifier(hidden_layers=[128, 64, 32], dropout=0.3)

# Executar otimização
results = tunner.optimize(
    model=model,
    synthetic_data=synthetic_data,
    proportions=[0.0, 0.1, 0.2, 0.3, 0.5, 0.7, 1.0],
    epochs=100,
    batch_size=128
)

# Relatório detalhado
tunner.generate_report(format='html')

📊 Metodologia

Para Datasets de Imagem

  1. Entrada: Imagens reais + imagens sintéticas (augmentation, GANs, difusão)
  2. Mistura: Combinação em proporções variadas com balanceamento de classes
  3. Treinamento: CNNs (ResNet, VGG, MobileNet) com hiperparâmetros fixos
  4. Avaliação: Métricas em conjunto de teste independente

Para Datasets Tabulares

  1. Entrada: Dados tabulares reais + sintéticos (SMOTE, CTGAN)
  2. Mistura: Preservação de distribuições e correlações
  3. Treinamento: MLPs, Random Forest, XGBoost, LightGBM
  4. Avaliação: Métricas específicas para desbalanceamento

🏗️ Arquitetura

datatunner/
├── core/           # Motor de otimização e avaliação
├── generators/     # Geradores de dados sintéticos
├── models/         # Modelos de ML/DL
├── utils/          # Utilitários e visualização
└── config/         # Configurações

🧪 Testes

pytest tests/ -v --cov=datatunner

📖 Documentação

Documentação completa disponível em: https://datatunner.readthedocs.io

🤝 Contribuindo

Contribuições são bem-vindas! Por favor, leia nosso guia de contribuição.

📄 Licença

Este projeto está licenciado sob a Licença MIT - veja o arquivo LICENSE para detalhes.

📚 Citação

Se você usar o DataTunner em sua pesquisa, por favor cite:

@software{datatunner2026,
  author = {Rocha, Leandro},
  title = {DataTunner: Otimização de Proporções de Dados Sintéticos},
  year = {2026},
  url = {https://github.com/leandro-rocha/datatunner}
}

👥 Autores

🙏 Agradecimentos

Baseado na pesquisa sobre otimização de dados sintéticos para modelos de Deep Learning.


Desenvolvido com ❤️ para a comunidade de Data Science

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

datatunner-0.1.0.tar.gz (54.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

datatunner-0.1.0-py3-none-any.whl (45.2 kB view details)

Uploaded Python 3

File details

Details for the file datatunner-0.1.0.tar.gz.

File metadata

  • Download URL: datatunner-0.1.0.tar.gz
  • Upload date:
  • Size: 54.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.13

File hashes

Hashes for datatunner-0.1.0.tar.gz
Algorithm Hash digest
SHA256 894ec92103d1b121b03f6f99504ab64602fee10c98508c7eb6d293ad5a1f220e
MD5 a69dd24a41708ad813147373128ea786
BLAKE2b-256 cb7742c8b7c0844e4ece16a6383928de1ab9e32bfa5eb04afe642ccbd3a7b4c2

See more details on using hashes here.

File details

Details for the file datatunner-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: datatunner-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 45.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.13

File hashes

Hashes for datatunner-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 692118f862d857d238f7e8944df06febb2d4c36bca272c43f50e0438f5598aec
MD5 de7ded79bbfdadb5933a6bfbdd7b36d8
BLAKE2b-256 e5e37236c032445cce525eca367eb041fd84467772ac789aea501fc1b79d95bf

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page