sdv-dev/SDV

GitHub: sdv-dev/SDV

SDV 是一个基于机器学习的 Python 库,用于生成高质量的表格合成数据,以解决数据隐私保护、共享受限及测试数据匮乏的问题。

Stars: 3466 | Forks: 414


此代码库属于 The Synthetic Data Vault Project 的一部分,这是来自 DataCebo 的一个项目。

[![开发状态](https://img.shields.io/badge/Dev%20Status-5%20--%20Production%2fStable-green)](https://pypi.org/search/?c=Development+Status+%3A%3A+5+-+Production%2FStable) [![PyPi Shield](https://img.shields.io/pypi/v/SDV.svg)](https://pypi.python.org/pypi/SDV) [![单元测试](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/fd84a4f45d145131.svg)](https://github.com/sdv-dev/SDV/actions/workflows/unit.yml?query=branch%3Amain) [![集成测试](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/e3836e20ec145132.svg)](https://github.com/sdv-dev/SDV/actions/workflows/integration.yml?query=branch%3Amain) [![覆盖率状态](https://codecov.io/gh/sdv-dev/SDV/branch/main/graph/badge.svg)](https://codecov.io/gh/sdv-dev/SDV) [![下载量](https://static.pepy.tech/personalized-badge/sdv?period=total&units=international_system&left_color=grey&right_color=blue&left_text=Downloads)](https://pepy.tech/project/sdv) [![Colab](https://img.shields.io/badge/Tutorials-Try%20now!-orange?logo=googlecolab)](https://docs.sdv.dev/sdv/demos) [![论坛](https://img.shields.io/badge/Forum-Join%20now!-36C5F0)](https://forum.datacebo.com)

# 概述 **Synthetic Data Vault** (SDV) 是一个 Python 库,旨在成为您创建表格合成数据的一站式解决方案。SDV 使用多种机器学习算法从您的真实数据中学习模式,并在合成数据中模拟这些模式。 ## 功能 :brain: **使用机器学习创建合成数据。** SDV 提供多种模型,涵盖经典的统计方法(GaussianCopula)到深度学习方法(CTGAN)。可以为单表、多连接表或时序表生成数据。 :bar_chart: **评估和可视化数据。** 根据多种指标将合成数据与真实数据进行对比。诊断问题并生成质量报告以获取更多洞察。 :arrows_counterclockwise: **预处理、匿名化和定义约束。** 控制数据处理以提高合成数据的质量,选择不同类型的匿名化方式,并以逻辑约束的形式定义业务规则。 | 重要链接 | | | --------------------------------------------- | ----------------------------------------------------------------------------------------------------| | [![](https://github.com/sdv-dev/SDV/blob/stable/docs/images/google_colab.png) **教程**][Tutorials] | 亲身体验 SDV。启动教程笔记本并自行运行代码。 | | :book: **[Docs]** | 通过用户指南和 API 参考了解如何使用 SDV 库。 | | :orange_book: **[Blog]** | 获取有关使用 SDV、部署模型以及我们合成数据社区的更多见解。 | | :busts_in_silhouette: **[DataCebo Forum]** | 讨论 SDV 功能、提问并获取帮助 . | | :computer: **[Website]** | 查看 SDV 网站以获取有关项目的更多信息。 | # 安装 SDV 在 [Business Source License](https://github.com/sdv-dev/SDV/blob/main/LICENSE) 下公开发布。 使用 pip 或 conda 安装 SDV。我们建议使用虚拟环境以避免与您设备上的其他软件发生冲突。 ``` pip install sdv ``` ``` conda install -c pytorch -c conda-forge sdv ``` # 快速入门 加载演示数据集以开始使用。该数据集是一个单表,描述了入住一家虚构酒店的客人。 ``` from sdv.datasets.demo import download_demo real_data, metadata = download_demo(modality='single_table', dataset_name='fake_hotel_guests') ``` ![单表元数据示例](https://github.com/sdv-dev/SDV/blob/stable/docs/images/Single-Table-Metadata-Example.png) 该演示还包括 **元数据**(metadata),即对数据集的描述,包括每列中的数据类型和主键(`guest_email`)。 ## 合成数据 接下来,我们可以创建一个 **SDV synthesizer**(合成器),这是一个可用于创建合成数据的对象。它从真实数据中学习模式并复制这些模式以生成合成数据。让我们使用 [GaussianCopulaSynthesizer](https://docs.sdv.dev/sdv/single-table-data/modeling/synthesizers/gaussiancopulasynthesizer)。 ``` from sdv.single_table import GaussianCopulaSynthesizer synthesizer = GaussianCopulaSynthesizer(metadata) synthesizer.fit(data=real_data) ``` 现在合成器已准备好创建合成数据! ``` synthetic_data = synthesizer.sample(num_rows=500) ``` 合成数据将具有以下属性: - **敏感列已完全匿名化。** 电子邮件、账单地址和信用卡号列包含新数据,因此您不会暴露真实值。 - **其他列遵循统计模式。** 例如,客房类型的比例、入住日期的分布以及房价和客房类型之间的相关性均得以保留。 - **键和其他关系保持完整。** 主键(客人电子邮件)对于每一行都是唯一的。如果您有多个表,主键和外键之间的连接是合理的。 ## 评估合成数据 SDV 库允许您通过将合成数据与真实数据进行比较来评估合成数据。首先生成一份质量报告。 ``` from sdv.evaluation.single_table import evaluate_quality quality_report = evaluate_quality(real_data, synthetic_data, metadata) ``` ``` Generating report ... (1/2) Evaluating Column Shapes: |████████████████| 9/9 [00:00<00:00, 1133.09it/s]| Column Shapes Score: 89.11% (2/2) Evaluating Column Pair Trends: |██████████████████████████████████████████| 36/36 [00:00<00:00, 502.88it/s]| Column Pair Trends Score: 88.3% Overall Score (Average): 88.7% ``` 该对象计算 0 到 100%(100 为最佳)范围内的整体质量评分以及详细的细分数据。为了获得更多洞察,您还可以可视化合成数据与真实数据。 ``` from sdv.evaluation.single_table import get_column_plot fig = get_column_plot( real_data=real_data, synthetic_data=synthetic_data, column_name='amenities_fee', metadata=metadata, ) fig.show() ``` ![真实数据与合成数据](https://github.com/sdv-dev/SDV/blob/stable/docs/images/Real-vs-Synthetic-Evaluation.png) # 后续步骤? 使用 SDV 库,您可以合成单表、多表和时序数据。您还可以自定义完整的合成数据工作流,包括预处理、匿名化和添加约束。 要了解更多信息,请访问 [SDV 演示页面](https://docs.sdv.dev/sdv/demos)。 ## 引用 如果您在研究中使用 SDV,请引用以下论文: *Neha Patki, Roy Wedge, Kalyan Veeramachaneni*. [The Synthetic Data Vault](https://dai.lids.mit.edu/wp-content/uploads/2018/03/SDV.pdf). [IEEE DSAA 2016](https://ieeexplore.ieee.org/document/7796926). ``` @inproceedings{ SDV, title={The Synthetic data vault}, author={Patki, Neha and Wedge, Roy and Veeramachaneni, Kalyan}, booktitle={IEEE International Conference on Data Science and Advanced Analytics (DSAA)}, year={2016}, pages={399-410}, doi={10.1109/DSAA.2016.49}, month={Oct} } ```


[The Synthetic Data Vault Project](https://sdv.dev) 最初于 2016 年在 MIT 的 [Data to AI Lab]( https://dai.lids.mit.edu/) 创建。经过 4 年的研究和企业应用,我们于 2020 年创建了 [DataCebo](https://datacebo.com),旨在发展该项目。 如今,DataCebo 是 SDV 的自豪开发者,这是最大的合成数据生成与评估生态系统。它拥有多个支持合成数据的库,包括: * 🔄 数据发现与转换。逆向转换以重现真实数据。 * 🧠 多种机器学习模型——从 Copulas 到深度学习——用于创建表格、多表和时间序列数据。 * 📊 衡量合成数据的质量和隐私,并比较不同的合成数据生成模型。 [开始使用 SDV 包](https://bit.ly/sdv-docs) —— 这是一个完全集成的解决方案,是您合成数据的一站式商店。或者,使用独立库来满足特定需求。
标签:Apex, DataCebo, DNS解析, SDV, Synthetic Data Vault, 人工智能, 凭据扫描, 合成数据, 开源项目, 数据仿真, 数据增强, 数据生成, 数据科学, 数据脱敏, 机器学习, 深度学习, 生成式模型, 用户模式Hook绕过, 算法, 统计分析, 网络安全, 表格数据, 资源验证, 逆向工具, 隐私保护