如果您正在寻找“ 截断正态分布” ,SciPy有一个名为truncnorm
的函数。
此分布的标准形式是截断为[a,b]范围的标准正态-请注意,a和b是在标准正态的域上定义的。要为特定的均值和标准差转换片段值,请使用:
a,b =(myclip_a-my_mean)/ my_std,(myclip_b-my_mean)/ my_std
truncnorm将a和b作为形状参数。
>>> from scipy.stats import truncnorm
>>> truncnorm(a=-2/3., b=2/3., scale=3).rvs(size=10)
array([-1.83136675, 0.77599978, -0.01276925, 1.87043384, 1.25024188,
0.59336279, -0.39343176, 1.9449987 , -1.97674358, -0.31944247])
上面的示例受-2和2限制,并返回10个随机变量(使用.rvs()
方法)
>>> min(truncnorm(a=-2/3., b=2/3., scale=3).rvs(size=10000))
-1.9996074381484044
>>> max(truncnorm(a=-2/3., b=2/3., scale=3).rvs(size=10000))
1.9998486576228549
这是-6、6的直方图:
0
从事机器学习任务。我们应该得到一组带约束的随机wrt正态分布。我们可以使用
np.random.normal()
获得正态分布数,但是它不提供任何绑定参数。我想知道怎么做吗?