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

相关文章

Python中logging实例讲解

Python中logging实例讲解

logging 的基本用法网上很多,这里就不介绍了。在引入正文之前,先来看一个需求: 假设需要将某功能封装成类库供他人使用,如何处理类库中的日志? 数年前在一个 C# 开发的项目中,我用...

使用PyCharm进行远程开发和调试的实现

使用PyCharm进行远程开发和调试的实现

你是否经常要在Windows 7或MAC OS X上面开发Python或Web应用程序,但是它们最后需要在linux上面来运行呢? 我们经常会碰到开发时没有问题但是到了正式的Linux环...

Python基于列表list实现的CRUD操作功能示例

本文实例讲述了Python基于列表list实现的CRUD操作功能。分享给大家供大家参考,具体如下: 本篇文章看之前你的先了解python 基础的知识点,比如控制流,变量,数据类型,lis...

在Django框架中伪造捕捉到的URLconf值的方法

比如说你有匹配某个模式的一堆视图,以及一个并不匹配这个模式但视图逻辑是一样的URL。 这种情况下,你可以通过向同一个视图传递额外URLconf参数来伪造URL值的捕捉。 例如,你可能有一...

Python算法输出1-9数组形成的结果为100的所有运算式

问题: 编写一个在1,2,…,9(顺序不能变)数字之间插入+或-或什么都不插入,使得计算结果总是100的程序,并输出所有的可能性。例如:1 + 2 + 34–5 + 67–8 + 9 =...