python實現差分隱私Laplace機制詳解
更新時間:2019年11月25日 14:47:21 作者:kyton123
今天小編就為大家分享一篇python實現差分隱私Laplace機制詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
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 應用之Pycharm 新建模板默認添加編碼格式-作者-時間等信息【推薦】
這篇文章主要介紹了Pycharm 新建模板默認添加編碼格式-作者-時間等信息 ,本文圖文并茂給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-06-06Python推導式簡單示例【列表推導式、字典推導式與集合推導式】
這篇文章主要介紹了Python推導式,結合簡單實例形式分析了Python列表推導式、字典推導式與集合推導式基本使用方法,需要的朋友可以參考下2018-12-12centos+nginx+uwsgi+Django實現IP+port訪問服務器
這篇文章主要介紹了centos+nginx+uwsgi+Django實現IP+port訪問服務器,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-11-11