Loading repository data…
Loading repository data…
AmirhosseinHonardoust / repository
A professional, research-grade comparison of Gaussian Copula and Variational Autoencoder (VAE) methods for synthetic tabular data generation. Includes full evaluation pipeline with distribution overlap, correlation analysis, PCA projections, pairplots, metrics, and automated visual reports.
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
A professional research-style Python project for generating and evaluating synthetic tabular data. The project compares a Gaussian Copula generator with a lightweight Variational Autoencoder (VAE) and evaluates the generated data using distribution, correlation, categorical similarity, boundary validity, privacy-proxy, and optional downstream machine-learning utility checks.
Important: This project is a research and portfolio demo, not a certified privacy-preserving synthetic data product.
It can help analyze synthetic data quality, but it does not provide formal differential privacy or guarantee that generated records are safe to release.
Synthetic data generation is useful when teams want to experiment, prototype, share examples, or test workflows without exposing raw sensitive datasets. However, synthetic data is often misunderstood. Generating fake-looking rows does not automatically make a dataset private, useful, or statistically realistic.
This project takes a more careful approach. It does not only generate synthetic rows; it also evaluates how closely the synthetic data preserves important properties of the original table.
The goal of this project is to demonstrate:
This project can:
quality_summary.csv for quick comparisonThis project does not:
A production-grade synthetic-data system would require stronger schema constraints, formal privacy evaluation, domain validation, monitoring, and security review.
The project currently supports two synthetic-data generation methods.
The Gaussian Copula method models feature distributions and dependency patterns, then samples new rows from the fitted statistical structure.
It is often useful for small or medium-sized tabular datasets where statistical relationships are relatively stable.
The VAE method learns a compressed latent representation of the dataset and decodes synthetic rows from that latent space.
In this repository, the VAE is intentionally lightweight and configurable. It should be treated as a baseline neural generator, not a fully tuned production VAE.
The project automatically generates charts to make synthetic-data quality easier to inspect.
Generated charts are saved in:
outputs/<run_name>/plots/
Main charts include:
| Chart | Purpose |
|---|---|
| Distribution overlap | Compares numeric feature distributions between real and synthetic data |
| PCA projection | Shows whether real and synthetic rows occupy similar low-dimensional space |
| Correlation heatmap | Compares correlation structure between real and synthetic data |
| Pairplot comparison | Provides visual pairwise comparisons for sampled rows |
These charts are diagnostic tools. They help identify obvious quality problems, but they should not be treated as proof that synthetic data is private or production-ready.
| Copula | VAE |
|---|---|
| Analysis: The Copula generator preserves the real numeric distributions much better on this demo dataset. It keeps the feature shapes closer to the original data and achieves a mean distribution-overlap score of approximately 0.943. | Analysis: The lightweight VAE baseline produces more compressed distributions and loses more tail behavior. Its mean distribution-overlap score is approximately 0.596, which indicates weaker distribution preservation. |
| Copula | VAE |
|---|---|
| Analysis: Copula samples cover a similar region of the real-data space, suggesting better diversity and coverage of the original feature space. | Analysis: VAE samples are more concentrated around the center, suggesting weaker coverage and less diversity in this lightweight baseline configuration. |
| Method | Distribution overlap ↑ | Correlation diff ↓ | Categorical similarity ↑ | Exact duplicate rate ↓ |
|---|---|---|---|---|
| Copula | 0.943 | 0.026 | 0.957 | 0.000 |
| VAE | 0.596 | 0.151 | 0.591 | 0.000 |
Interpretation: Higher distribution overlap and categorical similarity are better. Lower correlation difference and duplicate rate are better. On this demo dataset, Copula is the stronger generator, while the VAE is useful as a neural baseline but currently underfits the real data distribution.
| Copula | VAE |
|---|---|
| Analysis: Copula better preserves the overall spread and pairwise relationships between numeric variables. | Analysis: VAE samples are visibly more concentrated and do not preserve the full spread of the real data as well. |
The evaluation workflow compares real and synthetic datasets across multiple dimensions:
Real dataset
↓
Synthetic generator
↓
Synthetic dataset
↓
Quality metrics + visual diagnostics + optional ML utility evaluation
The evaluation includes:
This makes the project more useful than a generator-only demo, because it asks whether the generated data actually behaves like the original data.
Synthetic-Data-Artist/
│
├── .github/
│ └── workflows/
│ └── ci.yml
│
├── data/
│ ├── real_data.csv
│ └── synthetic_data_*.csv
│
├── outputs/
│ └── <run_name>/
│ ├── metrics.json
│ ├── quality_summary.csv
│ └── plots/
│ ├── distribution_overlap.png
│ ├── pca_projection.png
│ ├── correlation_heatmap.png
│ └── pairplot_comparison.png
│
├── reports/
│ └── <run_name>_report.html
│
├── synthetic_data_artist/
│ ├── main.py
│ ├── config.py
│ ├── data.py
│ ├── schema.py
│ ├── models/
│ │ ├── copula.py
│ │ └── vae.py
│ ├── evaluation/
│ │ ├── metrics/
│ │ │ ├── distribution.py
│ │ │ ├── privacy.py
│ │ │ └── utility.py
│ │ └── plots.py
│ └── reporting/
│ └── html_report.py
│
├── tests/
│ ├── test_core_contracts.py
│ ├── test_project_integrity.py
│ ├── test_enhanced_evaluation_metrics.py
│ └── test_cli_and_validation.py
│
├── config.yaml
├── requirements.txt
├── requirements-vae.txt
├── README.md
└── LICENSE
git clone https://github.com/AmirhosseinHonardoust/Synthetic-Data-Artist.git
cd Synthetic-Data-Artist
On Windows CMD:
python -m venv .venv
.venv\Scripts\activate
On macOS/Linux:
python -m venv .venv
source .venv/bin/activate
Install the project (and its dependencies) in editable mode:
pip install -e .
This also provides a synthetic-data-artist command. The Copula generator and
all evaluation run on the core dependencies. The VAE generator (--method vae)
additionally needs PyTorch, kept as an optional extra so the default install
stays light:
pip install -e .[vae]
Prefer plain requirements files? pip install -r requirements.txt (and
-r requirements-vae.txt for the VAE extra) install the same dependency sets.
All commands below use python -m synthetic_data_artist.main; af