Poisson¶
在概率论和统计学中,Poisson 是一种最基本的离散型概率分布,定义在非负整数集上,用来描述单位时间内随机事件发生次数的概率分布。
其概率质量函数(pmf)为:
\[pmf(x; \lambda) = \frac{e^{-\lambda} \cdot \lambda^x}{x!}\]
其中,\(\lambda\) 表示事件平均发生率。
参数¶
rate (int|float|Tensor) - 即上述公式中 \(\lambda\) 参数,大于零,表示事件平均发生率,即单位时间内的事件发生次数。如果输入数据类型不是 int 或 float
rate
的数据类型会被转换成数据类型为 paddle 全局默认数据类型的 1-D Tensor
代码示例¶
>>> import paddle
>>> from paddle.distribution import Poisson
>>> paddle.set_device('cpu')
>>> paddle.seed(100)
>>> rv = Poisson(paddle.to_tensor(30.0))
>>> print(rv.sample([3]))
Tensor(shape=[3, 1], dtype=float32, place=Place(cpu), stop_gradient=True,
[[35.],
[35.],
[30.]])
>>> print(rv.mean)
Tensor(shape=[], dtype=float32, place=Place(cpu), stop_gradient=True,
30.)
>>> print(rv.entropy())
Tensor(shape=[1], dtype=float32, place=Place(cpu), stop_gradient=True,
[3.11671066])
>>> rv1 = Poisson(paddle.to_tensor([[30.,40.],[8.,5.]]))
>>> rv2 = Poisson(paddle.to_tensor([[1000.,40.],[7.,10.]]))
>>> print(rv1.kl_divergence(rv2))
Tensor(shape=[2, 2], dtype=float32, place=Place(cpu), stop_gradient=True,
[[864.80285645, 0. ],
[0.06825157 , 1.53426421 ]])
方法¶
sample()¶
从 Poisson 分布中生成满足特定形状的样本数据。最终生成样本形状为 shape+batch_shape
。
参数
shape (Sequence[int],可选):采样次数。
返回
Tensor,样本数据。其维度为 \(\text{sample shape} + \text{batch shape}\) 。
entropy()¶
计算 Poisson 分布的信息熵。
\[\mathcal{H}(X) = - \sum_{x \in \Omega} p(x) \log{p(x)}\]
返回
类别分布的信息熵,数据类型与 rate
相同。
kl_divergence(other)¶
相对于另一个类别分布的 KL 散度,两个分布需要有相同的 \(\text{batch shape}\)。
参数
other (Poisson) - 输入的另一个类别分布。
返回
相对于另一个类别分布的 KL 散度,数据类型与 rate
相同。