概率和统计常识是数据迷信和机器学习的外围;咱们须要统计和概率常识来无效地收集、审查、剖析数据。
事实世界中有几个景象实例被认为是统计性质的(即天气数据、销售数据、财务数据等)。这意味着在某些状况下,咱们曾经可能开发出办法来帮忙咱们通过能够形容数据特色的数学函数来模仿天然。
“概率分布是一个数学函数,它给出了试验中不同可能后果的产生概率。”
理解数据的散布有助于更好地模仿咱们四周的世界。它能够帮忙咱们确定各种后果的可能性,或预计事件的可变性。所有这些都使得理解不同的概率分布在数据迷信和机器学习中十分有价值。
在本文中,咱们将介绍一些常见的散布并通过 Python 代码进行可视化以直观地显示它们。
均匀分布
最间接的散布是均匀分布。均匀分布是一种概率分布,其中所有后果的可能性均等。例如,如果咱们掷一个偏心的骰子,落在任何数字上的概率是 1/6。这是一个离散的均匀分布。
然而并不是所有的均匀分布都是离散的——它们也能够是间断的。它们能够在指定范畴内取任何理论值。a 和 b 之间间断均匀分布的概率密度函数 (PDF) 如下:
让咱们看看如何在 Python 中对它们进行编码:
import numpy as np
import matplotlib.pyplot as plt
from scipy import stats
# for continuous
a = 0
b = 50
size = 5000
X_continuous = np.linspace(a, b, size)
continuous_uniform = stats.uniform(loc=a, scale=b)
continuous_uniform_pdf = continuous_uniform.pdf(X_continuous)
# for discrete
X_discrete = np.arange(1, 7)
discrete_uniform = stats.randint(1, 7)
discrete_uniform_pmf = discrete_uniform.pmf(X_discrete)
# plot both tables
fig, ax = plt.subplots(nrows=1, ncols=2, figsize=(15,5))
# discrete plot
ax[0].bar(X_discrete, discrete_uniform_pmf)
ax[0].set_xlabel("X")
ax[0].set_ylabel("Probability")
ax[0].set_title("Discrete Uniform Distribution")
# continuous plot
ax[1].plot(X_continuous, continuous_uniform_pdf)
ax[1].set_xlabel("X")
ax[1].set_ylabel("Probability")
ax[1].set_title("Continuous Uniform Distribution")
plt.show()
高斯分布
高斯分布可能是最常听到也相熟的散布。它有几个名字:有人称它为钟形曲线,因为它的概率图看起来像一个钟形,有人称它为高斯分布,因为首先形容它的德国数学家卡尔·高斯命名,还有一些人称它为正态分布,因为晚期的统计学家 留神到它一遍又一遍地再次发生。
正态分布的概率密度函数如下:
σ 是标准偏差,μ 是散布的平均值。要留神的是,在正态分布中,均值、众数和中位数都是相等的。
当咱们绘制正态分布的随机变量时,曲线围绕均值对称——一半的值在核心的左侧,一半在核心的右侧。并且,曲线下的总面积为 1。
mu = 0
variance = 1
sigma = np.sqrt(variance)
x = np.linspace(mu - 3*sigma, mu + 3*sigma, 100)
plt.subplots(figsize=(8, 5))
plt.plot(x, stats.norm.pdf(x, mu, sigma))
plt.title("Normal Distribution")
plt.show()
对于正态分布来说。教训规定通知咱们数据的百分比落在平均值的肯定数量的标准偏差内。这些百分比是:
68% 的数据落在平均值的一个标准差内。
95% 的数据落在平均值的两个标准差内。
99.7% 的数据落在平均值的三个标准差范畴内。
对数正态分布
对数正态分布是对数呈正态分布的随机变量的间断概率分布。因而,如果随机变量 X 是对数正态分布的,则 Y = ln(X) 具备正态分布。
这是对数正态分布的 PDF:
对数正态分布的随机变量只取正实数值。因而,对数正态分布会创立右偏曲线。
让咱们在 Python 中绘制它:
X = np.linspace(0, 6, 500)
std = 1
mean = 0
lognorm_distribution = stats.lognorm([std], loc=mean)
lognorm_distribution_pdf = lognorm_distribution.pdf(X)
fig, ax = plt.subplots(figsize=(8, 5))
plt.plot(X, lognorm_distribution_pdf, label="μ=0, σ=1")
ax.set_xticks(np.arange(min(X), max(X)))
std = 0.5
mean = 0
lognorm_distribution = stats.lognorm([std], loc=mean)
lognorm_distribution_pdf = lognorm_distribution.pdf(X)
plt.plot(X, lognorm_distribution_pdf, label="μ=0, σ=0.5")
std = 1.5
mean = 1
lognorm_distribution = stats.lognorm([std], loc=mean)
lognorm_distribution_pdf = lognorm_distribution.pdf(X)
plt.plot(X, lognorm_distribution_pdf, label="μ=1, σ=1.5")
plt.title("Lognormal Distribution")
plt.legend()
plt.show()
泊松散布
泊松散布以法国数学家西蒙·丹尼斯·泊松的名字命名。这是一个离散的概率分布,这意味着它计算具备无限后果的事件——换句话说,它是一个计数散布。因而,泊松散布用于显示事件在指定期间内可能产生的次数。
如果一个事件在工夫上以固定的速率产生,那么及时察看到事件的数量(n)的概率能够用泊松散布来形容。例如,顾客可能以每分钟 3 次的平均速度达到咖啡馆。咱们能够应用泊松散布来计算 9 个客户在 2 分钟内达到的概率。
上面是概率品质函数公式:
λ 是一个工夫单位的事件率——在咱们的例子中,它是 3。k 是呈现的次数——在咱们的例子中,它是 9。这里能够应用 Scipy 来实现概率的计算。
from scipy import stats
print(stats.poisson.pmf(k=9, mu=3))
"""0.002700503931560479"""
泊松散布的曲线相似于正态分布,λ 示意峰值。
X = stats.poisson.rvs(mu=3, size=500)
plt.subplots(figsize=(8, 5))
plt.hist(X, density=True, edgecolor="black")
plt.title("Poisson Distribution")
plt.show()
指数分布
指数分布是泊松点过程中事件之间工夫的概率分布。指数分布的概率密度函数如下:
λ 是速率参数,x 是随机变量。
X = np.linspace(0, 5, 5000)
exponetial_distribtuion = stats.expon.pdf(X, loc=0, scale=1)
plt.subplots(figsize=(8,5))
plt.plot(X, exponetial_distribtuion)
plt.title("Exponential Distribution")
plt.show()
二项分布
能够将二项分布视为试验中胜利或失败的概率。有些人也可能将其形容为抛硬币概率。
参数为 n 和 p 的二项式散布是在 n 个独立试验序列中胜利次数的离散概率分布,每个试验都问一个是 – 否问题,每个试验都有本人的布尔值后果:胜利或失败。
实质上,二项分布测量两个事件的概率。一个事件产生的概率为 p,另一事件产生的概率为 1-p。
这是二项分布的公式:
可视化代码如下:
X = np.random.binomial(n=1, p=0.5, size=1000)
plt.subplots(figsize=(8, 5))
plt.hist(X)
plt.title("Binomial Distribution")
plt.show()
学生 t 散布
学生 t 散布(或简称 t 散布)是在样本量较小且总体标准差未知的状况下预计正态分布总体的均值时呈现的间断概率分布族的任何成员。它是由英国统计学家威廉·西利·戈塞特(William Sealy Gosset)以笔名“student”开发的。
PDF 如下:
n 是称为“自由度”的参数,有时能够看到它被称为“d.o.f.”对于较高的 n 值,t 散布更靠近正态分布。
import seaborn as sns
from scipy import stats
X1 = stats.t.rvs(df=1, size=4)
X2 = stats.t.rvs(df=3, size=4)
X3 = stats.t.rvs(df=9, size=4)
plt.subplots(figsize=(8,5))
sns.kdeplot(X1, label = "1 d.o.f")
sns.kdeplot(X2, label = "3 d.o.f")
sns.kdeplot(X3, label = "6 d.o.f")
plt.title("Student's t distribution")
plt.legend()
plt.show()
卡方散布
卡方散布是伽马散布的一个特例;对于 k 个自由度,卡方散布是一些独立的规范正态随机变量的 k 的平方和。
PDF 如下:
这是一种风行的概率分布,罕用于假设检验和置信区间的构建。
让咱们在 Python 中绘制一些示例图:
X = np.arange(0, 6, 0.25)
plt.subplots(figsize=(8, 5))
plt.plot(X, stats.chi2.pdf(X, df=1), label="1 d.o.f")
plt.plot(X, stats.chi2.pdf(X, df=2), label="2 d.o.f")
plt.plot(X, stats.chi2.pdf(X, df=3), label="3 d.o.f")
plt.title("Chi-squared Distribution")
plt.legend()
plt.show()
把握统计学和概率对于数据迷信至关重要。在本文展现了一些常见且罕用的散布,心愿对你有所帮忙。
https://www.overfit.cn/post/f0c0aac380524e7391ca5bbf2bad7258
作者:Kurtis Pykes