Python为数据添加拉普拉斯噪声Laplace noise

标签: 联邦学习  python

拉普拉斯分布(也称双指数分布)详情请参考:维基百科

在这里插入图片描述
绘制laplace pdf 曲线:

import matplotlib.pyplot as plt
import numpy as np


def laplace_pdf(x, b, μ):
    return (1 / (2 * b)) * np.e ** (-1 * (np.abs(x - μ) / b))


x = np.linspace(-10, 10, 10000)
y1 = [laplace_pdf(x_, 1, 0) for x_ in x]
y2 = [laplace_pdf(x_, 2, 0) for x_ in x]
y3 = [laplace_pdf(x_, 4, 0) for x_ in x]
y4 = [laplace_pdf(x_, 4, -5) for x_ in x]

plt.plot(x, y1, label="μ=0,b=1")
plt.plot(x, y2, label="μ=0,b=2")
plt.plot(x, y3, label="μ=0,b=4")
plt.plot(x, y4, label="μ=-5,b=4")

plt.title("Laplace pdf curves")
plt.legend()
plt.show()

生成拉普拉斯噪声后的数据:

import numpy as np


def add_laplace_noise(data_list, μ=0, b=1):
    laplace_noise = np.random.laplace(μ, b, len(data_list)) # 为原始数据添加μ为0,b为1的噪声
    return laplace_noise + data_list


data = np.random.uniform(0, 100, 400)
print("原始无噪声数据|均值:" + str(data.mean()) + " 方差:" + str(data.std()))
noise_list = add_laplace_noise(data)
print("加噪声后的数据|均值:" + str(noise_list.mean()) + " 方差:" + str(noise_list.std()))
版权声明:本文为weixin_35757704原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_35757704/article/details/109147968

智能推荐

拉普拉斯算子(Laplace Operator)学习整理

一.定义 拉普拉斯算子(Laplace Operator)是n维欧几里德空间中的一个二阶微分算子,定义为梯度(▽f)的散度(▽·f)。(摘自百度百科) 如果f是二阶可微的实函数,则f的拉普拉斯算子定义为: f的拉普拉斯算子也是笛卡尔坐标系xi中的所有非混合二阶偏导数: 对于二维空间上:(x与y代表 x-y 平面上的笛卡尔坐标) 二.机器学习中应用 1.作为具有旋转不变性的各向同性算子...

木木的Unity学习笔记(四)—— Unity中的柏林噪声(Perlin Noise)

木木的Unity学习笔记(四)—— Unity中的柏林噪声 柏林噪声是一个非常强大算法,经常用于程序生成随机内容,在游戏和其他像电影等多媒体领域广泛应用。算法发明者Ken Perlin也因此算法获得奥斯卡科技成果奖。在游戏开发领域,柏林噪声可以用于生成波形,起伏不平的材质或者纹理。例如,它能用于程序生成地形(例如使用柏林噪声来生成我的世界(Minecraft)里的地形),火...

noise2noise | 实验总结

非常好的一篇论文讲解 cuda9.1 GTX 1080 11G 环境搭建(Cuda9.1): 使用数据( 人证照片 ): train 500 test 200 第二种 text 噪声 加噪去噪 效果验证: 训练 –nb_epochs 300 训练时长 15h 测试 纯净数据,加噪去噪,效果如下: 带噪数据,不加噪,去噪 效果如下: 总结:noise2noise 300epoch训练得到...

转载:Simplex Noise (三)

本文转载自:https://blog.csdn.net/yolon3000/article/details/78369602 一、3D Simplex Noise   在学习完2D Simplex 噪声之后,3D Simplex噪声实现就很简单了,按照之前学习的,我们还是按照分步的方法来实现3D Simplex 噪声。 (一)、坐标变换(Coordinate skewing)。...

转载:Simplex Noise(二)

本文转载自:https://blog.cs 一、2D Simplex Noise   这次我们不打算从1D做起而是直接从2D Simplex Noise做起,不是因为Simplex Noise不能实现1D噪声,而是应用中2D、3D、4D用得更多一些。从前面的学习中,我们将Simplex Noise生成算法分成四个步骤,本文将继续采用这种分步实现的模式。 (一)、坐标变换(Coo...

猜你喜欢

shader 生成noise

之前的白噪声确实不太行,因为我们现实生活中并不是那样的完全嗡嗡。 我们接下来就是要生成这样的纹理。 一维noize 接下来看不同方式生成的一维noize y = mix(rand(i), rand(i + 1.0), f);使用的是线性插值 y = mix(rand(i), rand(i + 1.0), smoothstep(0.,1.,f));顶点的变化如何变得顺滑了起来 二维Noise 在 2...

Linux信号及工作原理

  什么是信号     信号可以理解为软件中断,是在软件层次上对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是差不多的。信号是异步的,一个进程不必通过任何操作来等待信号的到达。信号可以直接进行用户空间进程和内核进程之间的交互,内核进程也可以利用它来通知用户空间进程发生了哪些系统事件。   谁来产生信号 信号事件的发生有两个...

手机端图片放大,双指放大,元素的双指缩放

在做webapp时候,遇到一个需要做双指放大的功能,需求是:一张带有坐标的图片上有固定的点,需要点击这些坐标上的点进入相应的商品,并且需要对这一块进行双指可以缩放,双击缩放; 一开始是自己写监听touch事件进行处理,但是再缩放的时候,偶尔出现卡顿闪烁,用户体验不很好,后来采用插件 pinch-zoom GitHub地址: https://github.com/manuelstofer/...

leetcode 剑指offer 54 二叉搜索树的第k大节点

第 K 大节点即反中序遍历大第 K 个数。...

redis 初步了解

1.连接redis 通过java操作 1.首先 导入redis驱动 2.连接redis通过jedis 2.创建redis连接池 连接redis通过 jedis 相当于HTTPclient 1.创建单例模式的方法 在调用的时候被创建 2.创建私有静态 jedisPool 3. 创建私有类 创建静态代码块 放入连接池的基本配置 4.有 最大连接数 最大空闲书 最小空闲连接数 5. 创建连接redis对...