机器学习 | 概率分布

概率分布

概率分布有两种类型:离散(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()
binomial distribution

模拟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()
binomial distribution rvs

泊松分布

在具有比率参数(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()
poisson distribution

模拟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()
poisson distribution rvs

正态分布

正态分布

期望: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()
normal distribution

β分布

在贝叶斯概率理论中,如果后验概率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()
beta distribution

指数分布

指数分布是一种连续概率分布,用于表示独立随机事件发生的时间间隔


指数分布

期望: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()
exponential distribution

LDA

隐含狄利克雷分布(Latent Dirichlet Allocation,LDA)是一种基于贝叶斯算法模型,利用先验分布对数据进行似然估计并最终取得后验分布的一种方式

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。