Logistic 分布是一种连续概率分布。其累积分布函数是逻辑函数,出现在逻辑回归和前馈神经网络中。它在形状上类似于逻辑分布,但尾部较重。

逻辑分布的概率密度函数(pdf)定义为:

NumPy 逻辑分布

其中,μ 是分布的平均值或期望, s 是分布的尺度参数。

指数分布的平均值为 μ,方差为 s2𝜋2/ 3.

在x处评估的累积分布函数(cdf)是随机变量(X)取小于的值的概率或等于x。物流分布的cdf定义为:

NumPy 逻辑分布

NumPy random.logistic() 函数从逻辑分布中返回随机样本。

语法

numpy.random.logistic(loc=0.0, scale=1.0, size=None) 

参数

loc可选。 指定分布的平均值。 float 或 array_like of floats。默认值为 0.0。
scale可选。 指定分布的尺度参数。 float 或 array_like of floats。必须是非负数。默认值为 1.0。
size可选。 指定输出形状。 int 或 int 元组。如果给定形状为(m, n, k),则绘制m * n * k个样本。如果 size 为 None(默认),并且 loc 和 scale 均为标量,则返回单个值。否则,将抽取 np.broadcast(loc, scale).size 样本。

返回值

从参数化逻辑分布返回样本。 ndarray 或标量。

示例:逻辑分布的值

在下面的示例中,random.logistic() 函数用于创建给定矩阵包含从指定逻辑分布中抽取的随机值的形状。

import numpy as np

size = (5,3)

sample = np.random.logistic(0, 1, size)
print(sample) 

上述代码的可能输出可能是:

[[-1.11416732 -0.69983364 -0.28651865]
 [-3.05668874 -1.35517427 -3.50476354]
 [ 0.78448327  0.2499033  -0.36716532]
 [-0.45759849 -1.3434462   0.8690071 ]
 [-0.74228078  1.08577009 -2.35079969]] 

绘制逻辑分布

示例:密度图

Matplotlib 是一个 Python 绘图库,可用于绘制逻辑分布的概率密度函数 (pdf)使用 hist() 函数。

import matplotlib.pyplot as plt
import numpy as np

#修复种子以提高重现性
#结果
np.random.seed(10)

size = 10000
#抽取10000个样本
#物流配送
sample = np.random.logistic(0, 1, size)
bin = np.arange(-5,5,0.1)

plt.hist(sample, bins=bin, edgecolor='blue') 
plt.title("Logistic Distribution") 
plt.show() 

上述代码的输出将是:

NumPy 逻辑分布

示例:比较 pdf

可以使用 Seaborn kdeplot() 函数以图形方式比较多个概率密度函数。 在下面的示例中,比较了三个 Logistic 分布(每个均值分别为 0 和尺度参数 1、2 和 3)的 pdf。

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

#修复种子以提高重现性
#结果
np.random.seed(10)

size = 1000
#绘制1000个样本
#不同的物流配送
sns.kdeplot(np.random.logistic(0, 1, size))
sns.kdeplot(np.random.logistic(0, 2, size))
sns.kdeplot(np.random.logistic(0, 3, size))

plt.legend([r"$\mu = 0, s = 1$", 
            r"$\mu = 0, s = 2$", 
            r"$\mu = 0, s = 3$"])
plt.show() 

上述代码的输出将为:

NumPy 逻辑分布

示例:比较 cdf

可以使用 Seaborn ecdfplot() 函数以图形方式比较多个累积分布函数。在下面的示例中,比较了三个逻辑分布(每个均值分别为 0 且尺度参数分别为 1、2 和 3)的 cdf。

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

#修复种子以提高重现性
#结果
np.random.seed(10)

size = 1000
#绘制1000个样本
#不同的物流配送
sns.ecdfplot(np.random.logistic(0, 1, size))
sns.ecdfplot(np.random.logistic(0, 2, size))
sns.ecdfplot(np.random.logistic(0, 3, size))

plt.legend([r"$\mu = 0, s = 1$", 
            r"$\mu = 0, s = 2$", 
            r"$\mu = 0, s = 3$"])
plt.show() 

上述代码的输出将为:

NumPy 逻辑分布

示例:比较 pdf(不同的均值和尺度参数)

在下面的示例中,以图形方式比较了分别具有不同均值和尺度参数的三个逻辑分布。

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

#修复种子以提高重现性
#结果
np.random.seed(10)

size = 1000
#绘制1000个样本
#不同的物流配送
sns.kdeplot(np.random.logistic(0, 1, size))
sns.kdeplot(np.random.logistic(3, 2, size))
sns.kdeplot(np.random.logistic(6, 3, size))

plt.legend([r"$\mu = 0, s = 1$", 
            r"$\mu = 3, s = 2$", 
            r"$\mu = 6, s = 3$"])
plt.show() 

上述代码的输出将是:

NumPy 逻辑分布