【问题标题】:Generate data with normally distributed noise and mean function生成具有正态分布噪声和均值函数的数据
【发布时间】:2016-09-16 19:09:46
【问题描述】:

我创建了一个 n 值从 0 到 2pi 的 numpy 数组。现在,我想生成 n 个偏离正态分布的 sin(x) 测试数据点。

所以我想我需要做这样的事情:t = sin(x) + noise。噪音一定是这样的:noise = np.random.randn(mean, std).

但是,当我的平均值为 sin(x)(而不是常数)时,我不知道如何计算噪声。

【问题讨论】:

    标签: python numpy scipy normal-distribution


    【解决方案1】:

    numpy.random.randn 的参数不是均值和标准差。为此,您需要numpy.random.normal。它的签名是

    normal(loc=0.0, scale=1.0, size=None)
    

    要为您的 sin 函数添加噪声,只需在调用 normal() 时使用平均值 0。均值对应于loc 参数(即“位置”),默认为0。因此,鉴于x 类似于np.linspace(0, 2*np.pi, n),您可以这样做:

    t = np.sin(x) + np.random.normal(scale=std, size=n)
    

    可以使用numpy.random.randn,但您必须按std 对其进行缩放,因为randn 从标准正态分布返回样本,均值为0,标准差为1。要使用randn,你会写:

    t = np.sin(x) + std * np.random.randn(n)
    

    【讨论】:

      【解决方案2】:

      如果给y坐标加上噪声,部分测试数据点的值可能超出正弦函数的正常范围,即不是从-1到1,而是从-(1+noise ) 到 +(1+噪声)。我建议将噪声添加到x 坐标:

      t = np.sin(x + np.random.uniform(-noise, noise, x.shape))
      

      noise 必须是适合您问题的值。

      【讨论】:

        猜你喜欢
        • 2019-10-31
        • 2019-10-30
        • 2021-07-24
        • 2012-03-21
        • 2020-11-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多