-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathnaive.py
executable file
·36 lines (26 loc) · 848 Bytes
/
naive.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
35
#!/usr/bin/env python3
from numpy.random import laplace
from algorithms import epsilon as get_epsilon
from algorithms import scale
def Lap(scale):
return laplace(scale=scale)
def report_noisy_max(database, queries, epsilon):
responses = [database[q] + Lap(1/epsilon) for q in queries]
return responses.index(max(responses))
def sparse(database, queries, threshold, epsilon, ratio,
c=1, sensitivity=1, monotonic=True):
e1, e2 = get_epsilon(epsilon, ratio)
s1, s2 = scale(e1, e2, c, sensitivity, monotonic)
result = []
r = Lap(s1)
count = 0
for q in queries:
n = Lap(s2)
if database[q] + n >= threshold + r:
result.append(True)
count += 1
if count >= c:
break
else:
result.append(False)
return result