0

我无法从以下发行版为我的论文生成此数据集

我的尝试导致这个数据集看起来更独立。我似乎无法发现我哪里出错了。有人可以帮帮我吗?

这是代码:

# Non-linear dependence without correlation
import numpy as np
import matplotlib.pyplot as plt

x = np.random.uniform(-0.5, 0.5, 500)

def y_samples(x):
    y = []
    for i in x:
        if np.abs(i) <= 1/6:
            y.append(np.random.normal(0, 1/9))
        else:
            y.append(0.5 * np.random.normal(1, 1/9) + 0.5 * np.random.normal(-1, 1/9))
    return y    

y = y_samples(x)

plt.scatter(x, y)
plt.xlabel('x')
plt.ylabel('y')
plt.show()

谢谢!

4

1 回答 1

0

您处理的|x| > 1/6情况不正确,可能更多是因为对数学的误解而不是对代码的误解。表达方式

0.5 * np.random.normal(1, 1/9) + 0.5 * np.random.normal(-1, 1/9)

产生以零为中心的正态分布,而不是中心在 -1 和 1 的双峰分布。

一旦你更好地理解了数学,修复就很明显了:用类似的东西替换有问题的计算

np.random.normal(1.0, 1.0/9.0) if np.random.random() > 0.5 else np.random.normal(-1.0, 1.0/9.0)

(在我用于测试1/9 的 Python2 中计算为 0。 )

于 2019-06-04T10:02:56.453 回答