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

yipeiwu_com5年前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设计】。

相关文章

解读Python编程中的命名空间与作用域

解读Python编程中的命名空间与作用域

变量是拥有匹配对象的名字(标识符)。命名空间是一个包含了变量名称们(键)和它们各自相应的对象们(值)的字典。 一个Python表达式可以访问局部命名空间和全局命名空间里的变量。如果一个局...

Python操作串口的方法

本文实例讲述了Python操作串口的方法。分享给大家供大家参考。具体如下: 首先需确保安装了serial模块,如果没安装的话就安装一下python-pyserial。 一个Python实...

对于Python的Django框架使用的一些实用建议

前言:随着Django1.4第二个候选版的发布,虽然还不支持Python3,但Django团队已经在着手计划中,据官方博客所说,Django1.5将会试验性的支持python3。 Dja...

python多进程间通信代码实例

python多进程间通信代码实例

这篇文章主要介绍了python多进程间通信代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 这里使用pipe代码如下: im...

Python for循环中的陷阱详解

Python for循环中的陷阱详解

前言 Python 中的 for 循环和其他语言中的 for 循环工作方式是不一样的,今天就带你深入了解 Python 的 for 循环,看看它是如何工作的,以及它为什么按照这种方式工作...