python实现差分隐私Laplace机制详解

yipeiwu_com7年前Python基础

Laplace分布定义:

下面先给出Laplace分布实现代码:

import matplotlib.pyplot as plt
import numpy as np
 
def laplace_function(x,beta):
 result = (1/(2*beta)) * np.e**(-1*(np.abs(x)/beta))
 return result
#在-5到5之间等间隔的取10000个数
x = np.linspace(-5,5,10000)
y1 = [laplace_function(x_,0.5) for x_ in x]
y2 = [laplace_function(x_,1) for x_ in x]
y3 = [laplace_function(x_,2) for x_ in x]
 
 
plt.plot(x,y1,color='r',label='beta:0.5')
plt.plot(x,y2,color='g',label='beta:1')
plt.plot(x,y3,color='b',label='beta:2')
plt.title("Laplace distribution")
plt.legend()
plt.show()

效果图如下:

接下来给出Laplace机制实现:

Laplace机制,即在操作函数结果中加入服从Laplace分布的噪声。

Laplace概率密度函数Lap(x|b)=1/2b exp(-|x|/b)正比于exp(-|x|/b)。

import numpy as np
 
def noisyCount(sensitivety,epsilon):
 beta = sensitivety/epsilon
 u1 = np.random.random()
 u2 = np.random.random()
 if u1 <= 0.5:
  n_value = -beta*np.log(1.-u2)
 else:
  n_value = beta*np.log(u2)
 print(n_value)
 return n_value
 
def laplace_mech(data,sensitivety,epsilon):
 for i in range(len(data)):
  data[i] += noisyCount(sensitivety,epsilon)
 return data
 
if __name__ =='__main__':
 x = [1.,1.,0.]
 sensitivety = 1
 epsilon = 1
 data = laplace_mech(x,sensitivety,epsilon)
 for j in data:
  print(j)

以上这篇python实现差分隐私Laplace机制详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持【听图阁-专注于Python设计】。

相关文章

python3使用smtplib实现发送邮件功能

python3使用smtplib实现发送邮件功能

在之前的工作中,业务方做了一些调整,提出了对一部分核心指标做更细致的拆分并定期产出的需求。出于某些原因,这部分数据不太方便在报表上呈现,因此就考虑通过邮件的方式定期给业务方发送数据。 当...

让python在hadoop上跑起来

让python在hadoop上跑起来

本文实例讲解的是一般的hadoop入门程序“WordCount”,就是首先写一个map程序用来将输入的字符串分割成单个的单词,然后reduce这些单个的单词,相同的单词就对其进行计数,不...

python实现简单淘宝秒杀功能

本文实例为大家分享了Python淘宝秒杀的具体代码,供大家参考,具体内容如下 昨天茅台在线上搞秒杀,本来想着靠我惊人的手速去秒一瓶,结果。 所以痛定思痛,想想还是用脚本更靠谱。就在网上搜...

python使用Tkinter显示网络图片的方法

本文实例讲述了python使用Tkinter显示网络图片的方法。分享给大家供大家参考。具体实现方法如下: ''' tk_image_view_url_io.py display an...

Tornado实现多进程/多线程的HTTP服务详解

用tornado web服务的基本流程 1.实现处理请求的Handler,该类继承自tornado.web.RequestHandler,实现用于处理请求的对应方法如:get、post...