Skip to content

Commit 2076046

Browse files
authored
Update differential_privacy.py
1 parent 610dc1c commit 2076046

File tree

1 file changed

+23
-15
lines changed

1 file changed

+23
-15
lines changed
Lines changed: 23 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,30 @@
11
import numpy as np
22

3-
def add_laplace_noise(data, epsilon):
4-
"""Adds Laplace noise to data for differential privacy."""
5-
sensitivity = 1 # Assuming sensitivity of 1 for your data
6-
scale = sensitivity / epsilon
7-
noise = np.random.laplace(scale=scale)
8-
return data + noise
3+
class DifferentialPrivacy:
4+
def __init__(self, epsilon):
5+
"""Initialize the differential privacy mechanism with a given epsilon."""
6+
self.epsilon = epsilon
7+
8+
def add_noise(self, data):
9+
"""Add Laplace noise to the data for differential privacy."""
10+
sensitivity = self.calculate_sensitivity(data)
11+
noise = np.random.laplace(0, sensitivity / self.epsilon, size=len(data))
12+
return data + noise
13+
14+
def calculate_sensitivity(self, data):
15+
"""Calculate the sensitivity of the data."""
16+
# For simplicity, we assume the sensitivity is 1 for each entry
17+
return 1
918

1019
# Example Usage:
1120
if __name__ == "__main__":
12-
# Original data (example: number of users in each city)
13-
original_data = np.array([100, 250, 150, 300])
14-
15-
# Privacy parameter (epsilon)
16-
epsilon = 1.0
21+
# Sample data
22+
data = np.array([100, 200, 300, 400, 500])
1723

18-
# Add Laplace noise
19-
noisy_data = add_laplace_noise(original_data, epsilon)
24+
# Initialize differential privacy with epsilon = 0.5
25+
dp = DifferentialPrivacy(epsilon=0.5)
2026

21-
print("Original data:", original_data)
22-
print("Noisy data:", noisy_data)
27+
# Add noise to the data
28+
private_data = dp.add_noise(data)
29+
print("Original data:", data)
30+
print("Private data with noise:", private_data)

0 commit comments

Comments
 (0)