概率分布
概率分布有两种类型:离散(discrete)概率分布和连续(continuous)概率分布
离散概率分布也称为概率质量函数(probability mass function),离散概率分布的例子有伯努利分布(Bernoulli distribution)、二项分布(binomial distribution)、泊松分布(Poisson distribution)和几何分布(geometric distribution)等。
连续概率分布也称为概率密度函数(probability density function),它们是具有连续取值(例如一条实线上的值)的函数。正态分布(normal distribution)、指数分布(exponential distribution)和β分布(beta distribution)等都属于连续概率分布。
scipy.stats
二项分布
服从二项分布的随机变量X表示在n个独立的是/非试验中成功的次数,其中每次试验的成功概率为p
期望:E(X) = np
方差:Var(X) = np(1−p)
import numpy as np
import scipy.stats as st
import matplotlib as mpl
import matplotlib.pyplot as plt
def binomial_distribution():
n = 10
p = 0.3
k = np.arange(0, 21)
binomial = st.binom.pmf(k=k, n=n, p=p)
plt.plot(k, binomial, 'o-')
plt.title('Binomial: n=%i, p=%.2f' % (n, p))
plt.show()
模拟10000个服从二项分布的随机变量
def binomial_distribution_rvs():
data = st.binom.rvs(n=10, p=0.3, size=10000)
plt.hist(data, 20, facecolor='g', alpha=0.75)
plt.show()
泊松分布
在具有比率参数(rate parameter)λ的一段固定时间间隔内,事件发生的次数
期望:E(X) = λ
方差:Var(X) = λ
def poisson_distribution():
rate = 2
n = np.arange(0, 11)
poisson = st.poisson.pmf(n, rate)
plt.plot(n, poisson, 'o-')
plt.title('Poisson: rate=%i' % rate)
plt.show()
模拟10000个服从泊松分布的随机变量
def poisson_distribution_rvs():
data = st.poisson.rvs(mu=2, loc=0, size=10000)
plt.hist(data, 20, facecolor='g', alpha=0.75)
plt.show()
正态分布
期望:E(X) = μ
方差:Var(X) = σ2
# 正态分布
def normal_distribution():
mu = 0 # mean
sigma = 1 # standard deviation
x = np.arange(-5, 5, 0.1)
normal = st.norm.pdf(x, mu, sigma)
plt.plot(x, normal)
plt.title('Normal: $\mu$=%.1f, $\sigma^2$=%.1f' % (mu, sigma))
plt.grid(True)
plt.show()
β分布
在贝叶斯概率理论中,如果后验概率P(θ|x)和先验概率p(θ)满足同样的分布律,那么,先验分布和后验分布被叫做共轭分布,同时,先验分布叫做似然函数的共轭先验分布。
Beta分布是二项分布的共轭分布
Dirichlet分布是多项式分布的共轭分布
# beta分布
def beta_distribution():
a = 0.5
b = 0.5
x = np.arange(0.01, 1, 0.01)
beta = st.beta.pdf(x, a, b)
plt.plot(x, beta)
plt.title('Beta: a=%.1f, b=%.1f' % (a, b))
plt.show()
指数分布
指数分布是一种连续概率分布,用于表示独立随机事件发生的时间间隔
期望:E(X) = 1/λ
方差:Var(X) = 1/λ2
# 指数分布
def exponential_distribution():
l = 0.5
x = np.arange(0, 15, 0.1)
exponential = l * np.exp(-l * x)
plt.plot(x, exponential)
plt.title('Exponential: $\lambda$=%.2f' % l)
plt.show()
LDA
隐含狄利克雷分布(Latent Dirichlet Allocation,LDA)是一种基于贝叶斯算法模型,利用先验分布对数据进行似然估计并最终取得后验分布的一种方式