【问题标题】:How to generate same amount of noise to all the values in the dataset?如何对数据集中的所有值产生相同数量的噪声?
【发布时间】:2021-06-20 04:46:48
【问题描述】:

我想为数据集中的所有值生成相同数量的噪声。我的数据集包含 500 个值。我听说随机种子用于产生相同的噪音,但我无法弄清楚如何在这里使用它。我的代码是:

for i in range(0,500)
    x= x + np.random.normal(0,0.002,1) # velocity
    y = y + np.random.normal(0,0.0092,1) # rotation
    z = z + np.random.normal(0,0.7,1) # rotation

【问题讨论】:

  • 请描述“相同数量的噪音”是什么意思,例如你的意思是相同的方差还是别的什么,应该有任何相关性等吗? en.wikipedia.org/wiki/Pseudorandom_number_generator 对 PRNG 有很好的总结,即 numpy 用来生成随机数的算法类
  • @SamMason 感谢您的回复。相同数量的噪声,我的意思是相同的方差。例如在速度方面,我为 1 个点给出了 0.002 个方差,但我需要所有 500 个点的这个方差,但我无法在 python 中实现他的逻辑。
  • 种子值与方差无关,它用于重现完全相同的序列,可用于调试,在相同负载下测试不同的算法,或拉出一些所谓的估计中的方差减少方案。如果您想要相同的方差,请为您的法线使用相同的比例参数(标准偏差)。

标签: python random seed


【解决方案1】:

我想你只是想要这样的东西:

import numpy as np

n = 500
x = np.random.normal(0, 0.002,  n)
y = np.random.normal(0, 0.0092, n)
z = np.random.normal(0, 0.7,    n)

请注意,第二个参数scale 是标准偏差(即方差的平方根),因此您可能需要在其中调用np.sqrt,因为您的速度方差确实为 0.002

上面使用“矢量化”来一次生成 500 个样本,而不是对每个值进行单独调用。如果您想在循环中生成,您可以执行以下操作:

x = np.zeros(n)
for i in range(n):
  x[i] = np.random.normal(0, 0.002)

对于每个参数,但这写起来更繁琐,运行起来更慢,所以大多数人不会这样做

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-31
    • 1970-01-01
    • 2014-04-15
    • 1970-01-01
    • 2021-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多