gpt4 book ai didi

python-3.x - 如何生成将显示正态分布的倒钟形曲线的数据

转载 作者:行者123 更新时间:2023-12-04 15:12:52 24 4
gpt4 key购买 nike

我使用以下代码生成了遵循正态分布的随机数据:

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

rng = np.random.default_rng()
number_of_rows = 10000
mu = 0
sigma = 1
data = rng.normal(loc=mu, scale=sigma, size=number_of_rows)

dist_plot_data = sns.distplot(data, hist=False)
plt.show()
上面的代码按预期生成以下分布图:
enter image description here
如果我想创建一个完全像下面这样的逆曲线的分布图,那么我如何生成随机正态分布数据?
enter image description here
我想要分布图将显示反向曲线的数据。我怎样才能生成这个正态分布数据?

最佳答案

不确定这有多大用处,但使用拒绝采样很容易。从 Peter O's previous solution 借用 API但是使用块来提高性能给了我:

import numpy as np

def invNormal(low, high, mu=0, sd=1, *, size=1, block_size=1024):
remain = size
result = []

mul = -0.5 * sd**-2

while remain:
# draw next block of uniform variates within interval
x = np.random.uniform(low, high, size=min((remain+5)*2, block_size))

# reject proportional to normal density
x = x[np.exp(mul*(x-mu)**2) < np.random.rand(*x.shape)]

# make sure we don't add too much
if remain < len(x):
x = x[:remain]

result.append(x)
remain -= len(x)

return np.concatenate(result)
可以用作 sns.histplot(invNormal(-4, 4, size=100_000), bins=51) , 给我:
histogram
请注意,概率密度必须积分为 1,因此“越宽”,密度将越小(即,如果 x 轴上的范围为 [,则 y 轴上的密度不能为 0.4 -4,+4])。此外,生成 KDE 感觉不太有用,因为它会与边缘的不连续性作斗争

关于python-3.x - 如何生成将显示正态分布的倒钟形曲线的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64878103/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com