SmartNoise SDK:用于表格数据差分隐私的工具
SmartNoise SDK 包含两个软件包:
- smartnoise-sql:运行差分隐私SQL查询
- smartnoise-synth:生成差分隐私合成数据
要开始使用,请参阅下面的示例。点击每个项目以查看更详细的示例。
SQL
安装
pip install smartnoise-sql
查询
import snsql
from snsql import Privacy
import pandas as pd
csv_path = 'PUMS.csv'
meta_path = 'PUMS.yaml'
data = pd.read_csv(csv_path)
privacy = Privacy(epsilon=1.0, delta=0.01)
reader = snsql.from_connection(data, privacy=privacy, metadata=meta_path)
result = reader.execute('SELECT sex, AVG(age) AS age FROM PUMS.PUMS GROUP BY sex')
print(result)
PUMS.csv
和 PUMS.yaml
可以在 datasets 文件夹中找到。
查看 SQL 项目
合成器
安装
pip install smartnoise-synth
MWEM
import pandas as pd
import numpy as np
pums = pd.read_csv(pums_csv_path, index_col=None) # 在 datasets/ 中
pums = pums.drop(['income'], axis=1)
nf = pums.to_numpy().astype(int)
synth = snsynth.MWEMSynthesizer(epsilon=1.0, split_factor=nf.shape[1])
synth.fit(nf)
sample = synth.sample(10) # 获取10行合成数据
print(sample)
PATE-CTGAN
import pandas as pd
import numpy as np
from snsynth.pytorch.nn import PATECTGAN
from snsynth.pytorch import PytorchDPSynthesizer
pums = pd.read_csv(pums_csv_path, index_col=None) # 在 datasets/ 中
pums = pums.drop(['income'], axis=1)
synth = PytorchDPSynthesizer(1.0, PATECTGAN(regularization='dragan'), None)
synth.fit(pums, categorical_columns=pums.columns.values.tolist())
sample = synth.sample(10) # 合成10行数据
print(sample)
查看 合成器项目
交流
- 我们鼓励您加入我们的 GitHub 讨论
- 请使用 GitHub Issues 报告错误和提出功能请求。
- 对于其他请求,包括安全问题,请通过 smartnoise@opendp.org 与我们联系。
发布和贡献
如果您遇到任何错误,请通过创建 issue 告诉我们。
我们感谢所有的贡献。请查看贡献者指南。我们欢迎修复错误的拉取请求,无需事先讨论。
如果您计划为该系统贡献新功能、实用函数或扩展,请先创建一个 issue 并与我们讨论该功能。