一、高斯分布简介

高斯分布(也称正态分布)是一种常见的概率分布,又称为钟形曲线分布。高斯分布的概率密度函数为:

$$f(x)=\dfrac{1}{\sqrt{2\pi}\sigma}e^{-\frac{(x-\mu)^2}{2\sigma^2}}$$

其中,$\mu$ 表示分布的均值,$\sigma$ 表示分布的标准差。

高斯分布的特点是:均值在曲线的中央,标准差决定了曲线的陡峭程度。

二、numpy 库中生成高斯分布

Python 中使用 numpy 库可以方便地生成高斯分布。numpy 中的 np.random.normal 方法可以生成高斯分布的随机数,方法原型为:

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

其中,loc 表示均值,scale 表示标准差,size 表示生成数据的个数。

下面是一个代码示例:

import numpy as np
import matplotlib.pyplot as plt

mu, sigma = 0, 0.1 # 均值和标准差
s = np.random.normal(mu, sigma, 1000)

count, bins, ignored = plt.hist(s, 30, density=True)
plt.plot(bins, 1/(sigma * np.sqrt(2 * np.pi)) *
         np.exp( - (bins - mu)**2 / (2 * sigma**2) ),
         linewidth=2, color='r')
plt.show()

上述代码中,生成了一个均值为 0,标准差为 0.1,共观测 1000 次的高斯分布。其中 count、bins 和 ignored 分别表示生成的数据、bin 的边界值和直方图的 patches。

运行代码后会出现一个包含高斯分布的直方图,如下所示:

三、scipy 库中生成高斯分布

除了 numpy,Python 中还可以使用 scipy 库生成高斯分布。scipy 中的 stats.norm 方法可以生成高斯分布的随机数,方法原型为:

scipy.stats.norm(loc=0.0, scale=1.0)

其中,loc 表示均值,scale 表示标准差。

下面是一个代码示例:

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm

mu, sigma = 0, 0.1 # 均值和标准差
s = np.random.normal(mu, sigma, 1000)

x = np.linspace(s.min(), s.max(), 100)
y = norm.pdf(x, mu, sigma)

plt.hist(s, 30, density=True)
plt.plot(x, y, 'r', linewidth=2)
plt.show()

上述代码中,同样生成了一个均值为 0,标准差为 0.1,共观测 1000 次的高斯分布。其中 x 表示画图的横坐标,y 表示画图的纵坐标。

运行代码后会出现一个包含高斯分布的直方图,和一条画出的曲线,如下所示:

四、高斯分布的应用

高斯分布在很多领域都有着广泛的应用,例如物理学、金融学等。下面以机器学习为例,介绍高斯分布的应用。

在机器学习中,高斯分布常被用于表示随机误差。例如在线性回归中,我们假设噪声项 $\epsilon$ 服从均值为 0,方差为 $\sigma^2$ 的高斯分布:

$$\epsilon\sim N(0, \sigma^2)$$

在做预测时,我们可以使用高斯分布来表示模型的置信度。例如对于线性回归问题,我们可以使用高斯分布来表示模型对新样本的预测值和实际值之间的差异。

五、总结

高斯分布在统计学、物理学、金融学等领域有着广泛的应用。Python 中可以使用 numpy 和 scipy 库方便地生成高斯分布,并应用于机器学习等问题中。