Metadata-Version: 2.4
Name: datatunner
Version: 2.0.0
Summary: Ferramenta para determinar a proporção ideal de dados sintéticos em modelos de ML
Author-email: Leandro Costa Rocha <leandro.rocha@example.com>
License: MIT
Project-URL: Homepage, https://github.com/leandrocrx/datatunner
Project-URL: Repository, https://github.com/leandrocrx/datatunner
Project-URL: Issues, https://github.com/leandrocrx/datatunner/issues
Keywords: machine learning,deep learning,synthetic data,data augmentation,neural networks
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: numpy>=1.20
Requires-Dist: torch>=1.10
Requires-Dist: torchvision>=0.11
Requires-Dist: matplotlib>=3.3
Requires-Dist: seaborn>=0.11
Requires-Dist: scikit-learn>=0.24
Requires-Dist: pandas>=1.2
Requires-Dist: Pillow>=8.0
Requires-Dist: tqdm>=4.60
Requires-Dist: plotly>=5.0
Requires-Dist: albumentations>=1.3.0
Requires-Dist: imbalanced-learn>=0.8
Provides-Extra: dev
Requires-Dist: pytest>=6.0; extra == "dev"
Requires-Dist: pytest-cov>=2.0; extra == "dev"
Requires-Dist: sdv>=1.2.0; extra == "dev"
Requires-Dist: xgboost>=1.5; extra == "dev"
Requires-Dist: lightgbm>=3.0; extra == "dev"
Requires-Dist: catboost>=1.0; extra == "dev"
Dynamic: license-file

# DataTunner

**Otimizacao Automatica da Proporcao de Dados Sinteticos para Modelos de Deep Learning**

DataTunner e uma ferramenta Python open-source que automatiza a determinacao da proporcao otima de dados sinteticos para maximizar o desempenho de modelos de machine learning.

## Escopo

**Imagens:** data augmentation (albumentations)
**Dados tabulares:** SMOTE, ADASYN, Borderline-SMOTE, Gaussian Noise, CTGAN, TVAE

## Instalacao

```bash
pip install datatunner
```

## Exemplo Rapido (Dados Tabulares)

```python
import numpy as np
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from datatunner import DataTunner
from datatunner.models.mlp import MLPClassifier
from datatunner.generators.smote import GaussianNoiseGenerator

# Dados
iris = load_iris()
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.2, random_state=42)

# Gerar sinteticos
noise_gen = GaussianNoiseGenerator(noise_level=0.15, random_seed=42)
noise_gen.fit(X_train, y_train)
X_synth, y_synth = noise_gen.generate(n_samples=60)

# Otimizar
tunner = DataTunner(data_type='tabular', output_dir='results', random_seed=42,
                    config={'epochs': 10, 'batch_size': 8, 'device': 'cpu'})
tunner.real_data, tunner.real_labels = X_train, y_train
tunner.test_data, tunner.test_labels = X_test, y_test
tunner.synthetic_data, tunner.synthetic_labels = X_synth, y_synth
tunner.class_names = [str(c) for c in np.unique(y_train)]

model = MLPClassifier(input_dim=4, num_classes=3, hidden_layers=[32, 16], dropout=0.2)
results = tunner.optimize(model=model, proportions=[0.0, 0.3, 0.5, 0.7], epochs=10, n_trials=2)
print(f"Melhor proporcao: {results['best_proportion']}")
```

## License

MIT
