numpy 我应该用什么来添加20%的噪音到我的测试数据

ig9co6j1  于 9个月前  发布在  其他
关注(0)|答案(1)|浏览(70)

我想给我的测试数据添加20%的噪声,我不知道该怎么做,因为我不知道np.random函数实际上是如何工作的。
我应该使用这样的东西:

x_test_noise = x_test * np.random.uniform(0.8, 1.2, size=x_test.shape)

字符串
或者类似的东西:

x_test_noise=pd.DataFrame()
for i in range (len(x_test)):
    for j in range(len(x_test.columns)):
        x_test_noise=x_test*np.random.uniform(0.8,1.2)


我主要关心的是,我希望x_test的每个值都乘以从随机分布中提取的一个不同的值。第一个语法是要做到这一点,还是要将x_test的每个值乘以从随机分布中提取的相同值?

gxwragnw

gxwragnw1#

你的第一段代码以一种高效的(向量)方式完成了你所期望的工作:它将每个值乘以一个介于0.8和1.2之间的不同随机因子。
为了说服自己,只需设计一个小的图形示例:

import pandas as pd
import numpy as np

N = 100

x_test = np.sin(np.linspace(0, 5, N))
noise = np.random.uniform(0.8, 1.2, size=x_test.shape)

x_test_noise = x_test * noise

df = pd.DataFrame({'real': x_test, 'noise': noise, 'real*noise': x_test_noise})
df.plot()

# add lower/upper bounds
df['real'].mul(0.8).plot(ls=':', color='k')
df['real'].mul(1.2).plot(ls=':', color='k')

字符串
输出量:


的数据

绘制没有pandas依赖的代码

import matplotlib.pyplot as plt
import numpy as np

N = 100

x_test = np.sin(np.linspace(0, 5, N))
noise = np.random.uniform(0.8, 1.2, size=x_test.shape)

x_test_noise = x_test * noise

ax = plt.subplot()

ax.plot(x_test, label='real')
ax.plot(noise, label='noise')
ax.plot(x_test_noise, label='real*noise')
ax.plot(x_test*0.8, ls=':', color='k')
ax.plot(x_test*1.2, ls=':', color='k')
plt.legend()

相关问题