我希望使用Numpy在Python中创建异类数据。
bias=100
N=10
X = np.arange(1,N,0.2).reshape(-1,1)
y_true = np.ravel(X.dot(0.3) + bias)
noise = np.random.normal(0, 1, (N-1)*5)
y = y_true + noise
我需要噪声中的每个元素都来自正态分布,具有不同的异方差。理想情况下,方差必须是X的对应值的函数。如何确保这一点?np.random.normal只接受标量方差项。
发布于 2018-08-05 08:11:10
来自help(np.random.normal)
normal(...)mtrand.RandomState实例的方法
正常(loc=0.0、scale=1.0、size=None)
..。
scale : float or array_like of floats
分布的标准差(分布或“宽度”)。
因此,如果您需要的话,np.random.normal
可以接受一组方差项。下面是一个10个随机样本的例子,这些样本的均值相同,标准差逐渐增加:
np.random.normal(scale=np.arange(1,10))
#array([ -0.04997945, 2.05945125, 1.07041091, 7.2321691 ,
# -2.31088503, 9.20914924, -3.1213077 , -3.87994062,
# -19.3611583 ])
下面是每个分布的10000个样本及其标准差的二维数组:
np.stack([np.random.normal(scale=np.arange(1,10))
for x in range(10000)]).std(axis=0)
#array([1.01413654, 2.01043535, 2.97448904, 3.98098459, 5.045089 ,
# 5.95467152, 6.94379633, 8.01227677, 9.0252082 ])
https://stackoverflow.com/questions/51690439
复制相似问题