maxframe.tensor.random.weibull#
- maxframe.tensor.random.weibull(a, size=None, chunk_size=None, gpu=None, dtype=None)[源代码]#
从威布尔分布中抽取样本。
从给定形状参数 a 的单参数威布尔分布中抽取样本。
\[X = (-ln(U))^{1/a}\]其中,U 是从 (0,1] 上的均匀分布中抽取的。
更常见的两参数威布尔分布包含尺度参数 \(\lambda\),其表达式为 \(X = \lambda(-ln(U))^{1/a}\)。
- 参数:
a (float or array_like of floats) -- 分布的形状参数。应大于零。
size (int or tuple of ints, optional) -- 输出形状。如果给定的形状是,例如
(m, n, k),则抽取m * n * k个样本。如果 size 是None``(默认值),当 ``a是标量时返回单个值。否则,抽取mt.array(a).size个样本。chunk_size (int or tuple of int or tuple of ints, optional) -- 每个维度上期望的块大小
gpu (bool, optional) -- 如果为 True,则在 GPU 上分配张量,默认为 False
dtype (data-type, optional) -- 返回张量的数据类型。
- 返回:
out -- 从参数化的威布尔分布中抽取的样本。
- 返回类型:
Tensor or scalar
备注
威布尔分布(或最小值的第三类渐近极值分布,SEV Type III,或 Rosin-Rammler 分布)是广义极值 (GEV) 分布中用于建模极值问题的一类分布。此类分布包括 Gumbel 分布和 Frechet 分布。
威布尔分布的概率密度为
\[p(x) = \frac{a} {\lambda}(\frac{x}{\lambda})^{a-1}e^{-(x/\lambda)^a},\]其中 \(a\) 是形状参数,\(\lambda\) 是尺度参数。
该函数在其峰值(众数)处为 \(\lambda(\frac{a-1}{a})^{1/a}\)。
当
a = 1时,威布尔分布退化为指数分布。引用
示例
从分布中抽取样本:
>>> import maxframe.tensor as mt
>>> a = 5. # shape >>> s = mt.random.weibull(a, 1000)
显示样本的直方图以及概率密度函数:
>>> import matplotlib.pyplot as plt >>> x = mt.arange(1,100.)/50. >>> def weib(x,n,a): ... return (a / n) * (x / n)**(a - 1) * mt.exp(-(x / n)**a)
>>> count, bins, ignored = plt.hist(mt.random.weibull(5.,1000).execute()) >>> x = mt.arange(1,100.)/50. >>> scale = count.max()/weib(x, 1., 5.).max() >>> plt.plot(x.execute(), (weib(x, 1., 5.)*scale).execute()) >>> plt.show()