-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.py
34 lines (23 loc) · 978 Bytes
/
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import sys
import warnings
warnings.filterwarnings("ignore")
from sklearn.datasets import load_diabetes
import synthcity.logger as log
from synthcity.plugins import Plugins
from synthcity.plugins.core.dataloader import GenericDataLoader
log.add(sink=sys.stderr, level="INFO")
from src.synthprivacy.mmbrshp_rsk import MmbrshpRsk
if __name__ == "__main__":
# load sample real data
real_data, y = load_diabetes(return_X_y=True, as_frame=True)
real_data["target"] = y
# Construct membership disclosure object and get the training dataset
mmbr=MmbrshpRsk(real_data, population_size=10*len(real_data))
training_data=mmbr.train_data
# Synthesize
loader = GenericDataLoader(training_data)
syn_model = Plugins().get('marginal_distributions')
syn_model.fit(loader)
syn_data=syn_model.generate(count=len(real_data)).dataframe()
# Calculate membership disclosure risk
rel_f1,naive_f1=mmbr.calc_risk(syn_data)