sodascience/metasyn
GitHub: sodascience/metasyn
一个以透明和隐私保护为核心理念的合成表格数据生成工具,帮助用户从真实敏感数据中创建可安全共享的替代数据集。
Stars: 51 | Forks: 11
Transparent and privacy-friendly synthetic data generation
以透明、易懂且保护隐私的方式__生成合成表格数据__。Metasyn 使得敏感数据的所有者能够创建测试数据、进行开放科学、提高代码的可复现性、鼓励数据重用并增强其数据集的可访问性,而无需担心泄露隐私信息。 借助 Metasyn,您可以__拟合__模型到现有的 dataframe,将其__保存__为透明且可审计的 `.json` 文件,并__合成__一个与真实数据高度相似的 dataframe。与大多数其他合成数据软件相比,我们做出了明确的选择:严格限制模型中的统计信息,以遵循最高的隐私标准。 ## 亮点 - 👋 __易于访问__。Metasyn 的设计初衷是易于使用和理解,我们尽最大努力欢迎新手和初学者。如果我们有可以改进的地方,请[告诉我们](https://github.com/sodascience/metasyn/issues/new)! - ✨ __功能全面__。Metasyn 开箱即用,原生支持处理各种数据类型、缺失值、分类数据、具有唯一值的键列以及结构化字符串(例如邮政编码或标识符)。 - 🔎 __透明__。使用 Metasyn,您不仅可以共享合成数据,还可以通过可追溯、可审计的元数据格式共享用于创建合成数据的模型和设置。每个人都可以阅读并理解模型的作用;哪些信息会被公开是一目了然的。 - 🔐 __隐私安全__。默认情况下,Metasyn 不包含多变量信息,这意味着降低了身份、属性或群体泄露等隐私问题的风险。在此基础之上,我们支持隐私插件(例如我们自己的[披露控制插件](https://github.com/sodascience/metasyn-disclosure-control)),以便在极其敏感的场景下进一步增强隐私保护。 - 🔗 __深度集成__。我们与 Python 生态系统中广受欢迎的现代工具进行了紧密集成,构建于出色的 [polars](https://pola.rs/) dataframe 库之上(也支持 [pandas](https://pandas.pydata.org/)),并使用 [faker](https://faker.readthedocs.io/en/master/) 生成姓名、电子邮件、电话号码等本地化数据。 - 📦 __可扩展__。您是否缺少某些功能?或者对隐私有不同的定义?我们的插件系统允许您(或您的组织)创建自己的扩展,从而根据需要调整 Metasyn。您也可以直接向该项目[贡献代码](#contributing)。 ## 安装 可以直接在终端中使用以下命令从 PyPI 安装 Metasyn: ``` pip install metasyn ``` 可以直接从 GitHub 安装最新(可能不稳定)的开发版本,命令如下: ``` pip install git+https://github.com/sodascience/metasyn ``` ## 使用方法  要生成合成数据,`metasyn` 首先需要将 `MetaFrame` 拟合到数据上,然后可以使用它来生成新的合成行:  上图与以下 Python 代码紧密对应: ``` import polars as pl from metasyn import MetaFrame, demo_file # 获取内置 demo dataset 的 csv 文件路径 csv_path = demo_file("fruit") # 从 csv file 创建一个 polars dataframe。 # 确保 data types 正确是很重要的 # 在创建你的 dataframe 时,尤其是 categorical data! df = pl.read_csv(csv_path, schema_overrides={ "fruits": pl.Categorical, "cars": pl.Categorical }) # 从 DataFrame 创建一个 MetaFrame。 mf = MetaFrame.fit_dataframe(df) # 从 MetaFrame 生成一个包含 5 行的新 DataFrame。 df_synth = mf.synthesize(5) # 这个 DataFrame 可以被导出为 csv、parquet、excel 等格式。 df_synth.write_csv("output.csv") ``` 要探索更多选项并进行在线尝试,请查看我们的交互式教程: [](https://colab.research.google.com/github/sodascience/metasyn/blob/main/examples/getting_started.ipynb) 有关如何使用 polars 创建 dataframe 的更多信息,请参阅 [Polars 文档](https://pola.rs/)。Metasyn 同样支持 pandas dataframe! ## 接下来去哪里 - 要探索更多选项并进行在线尝试,请查看我们的交互式教程:[](https://colab.research.google.com/github/sodascience/metasyn/blob/main/examples/getting_started.ipynb) - 作为下一步,为了解有关使用 metasyn 生成合成数据的更多信息,我们建议您查阅[用户指南](https://metasyn.readthedocs.io/en/latest/usage/usage.html)及其他[文档](https://metasyn.readthedocs.io/en/latest)。 - 如需更高的隐私保护,请查看我们的[披露控制插件](https://github.com/sodascience/metasyn-disclosure-control)。 - 想要基于 metasyn 构建程序?请查看带有版本号的 [Docker 容器](https://hub.docker.com/r/sodateam/metasyn)以及我们的 [CLI](https://metasyn.readthedocs.io/en/latest/usage/cli.html)。 ## 引用 如果您使用了 Metasyn,请引用我们的 JOSS 论文!这既是对作者的肯定,也能帮助我们展示这项工作的影响力。BibTeX 条目如下: ``` @article{ schram2025metasyn, doi = {10.21105/joss.07099}, url = {https://doi.org/10.21105/joss.07099}, year = {2025}, publisher = {The Open Journal}, volume = {10}, number = {105}, pages = {7099}, author = {Schram, Raoul and Spithorst, Samuel and van Kesteren, Erik-Jan}, title = {Metasyn: Transparent Generation of Synthetic Tabular Data with Privacy Guarantees}, journal = {Journal of Open Source Software} } ``` ## 贡献 Metasyn 是一个开源项目,我们欢迎社区的贡献,包括错误报告、功能需求以及代码贡献。请阅读我们的[贡献指南](.github/CONTRIBUTING.md)以获取更多信息并开始参与! ## 联系方式 **Metasyn** 是由 [ODISSEI Social Data Science (SoDa)](https://odissei-data.nl/nl/soda/) 团队发起的项目。 您对技术实现有疑问、建议或意见?请在[问题追踪器](https://github.com/sodascience/metasyn/issues)中创建 issue,或者随时联系 [Erik-Jan van Kesteren](https://github.com/vankesteren) 或 [Raoul Schram](https://github.com/qubixes)。
标签:Docker, Python, 代码可复现性, 合成数据生成, 安全防御评估, 开源科学, 数据可用性, 数据增强, 数据泄露防护, 数据脱敏, 数据集共享, 无后门, 机器学习数据, 测试数据生成, 网络安全, 网络探测, 表格数据处理, 请求拦截, 逆向工具, 隐私保护, 隐私计算