向 numpy 数组添加噪声
Adding noise to numpy array
假设我正在尝试创建一个包含 100 个样本的数据集,该数据集遵循某条线,可能是 2x+2。我希望 X 轴上的值介于 0-1000 之间。为此,我使用以下内容。
X = np.random.random(100,1) * 1000
Y = (2*X) + 2
data = np.hstack(X,Y)
hstack 为我提供了具有相应 x 和 y 值的数组。那部分有效。但是,如果我想向其中注入噪声以便将数据点分散到远离 2x+2 线的地方……这就是我无法弄清楚的。
例如,我希望 Y 数组的标准差为 20。我如何将噪声注入到 y 值中?
也许我遗漏了一些东西,但是您尝试过将 numpy.random.normal
(scale=20,size=100)
添加到 Y
吗?你甚至可以写
Y=numpy.random.normal(2*X+2,20)
一次完成所有操作(并且不重复数组大小)。
要模拟噪声,请使用正态分布的随机数生成器,例如 np.random.randn
。
这是你想要做的吗:
X = np.linspace(0, 1000, 100)
Y = (2*X) + 2 + 20*np.random.randn(100)
data = np.hstack((X.reshape(100,1),Y.reshape(100,1)))
假设我正在尝试创建一个包含 100 个样本的数据集,该数据集遵循某条线,可能是 2x+2。我希望 X 轴上的值介于 0-1000 之间。为此,我使用以下内容。
X = np.random.random(100,1) * 1000
Y = (2*X) + 2
data = np.hstack(X,Y)
hstack 为我提供了具有相应 x 和 y 值的数组。那部分有效。但是,如果我想向其中注入噪声以便将数据点分散到远离 2x+2 线的地方……这就是我无法弄清楚的。
例如,我希望 Y 数组的标准差为 20。我如何将噪声注入到 y 值中?
也许我遗漏了一些东西,但是您尝试过将 numpy.random.normal
(scale=20,size=100)
添加到 Y
吗?你甚至可以写
Y=numpy.random.normal(2*X+2,20)
一次完成所有操作(并且不重复数组大小)。
要模拟噪声,请使用正态分布的随机数生成器,例如 np.random.randn
。
这是你想要做的吗:
X = np.linspace(0, 1000, 100)
Y = (2*X) + 2 + 20*np.random.randn(100)
data = np.hstack((X.reshape(100,1),Y.reshape(100,1)))