机器学习的概率统计模型(附代码)

机器学习的概率统计模型(附代码),第1张

目录

系列文章目录

一. 概率论

1.1 离散随机变量分布

1.2 连续随机变量分布

二. 数理统计基础

2.1 抽样分布

2.2 大数定律

2.3中心极限定理

总结


系列文章目录

第一章:会思考的机器你造嘛——AI技术

第二章:机器学习的概率统计模型(附代码)

​第三章:深度学习敲门砖——神经网络 ​

第四章:掌握神经网络的法宝(一)


一. 概率论 1.1 离散随机变量分布

1)伯努利分布

        伯努利分布又称为两点分布或0-1分布,指的是对于随机变量X有, 参数为p(0


EX= p,DX=p(1-p)。


伯努利试验成功的次数服从伯努利分布,参数p是试验成功的概率。


伯努利分布的概率用python代码绘制如下:

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

def bernoulli_pmf(p=0.0):
    ber_dist =stats.bernoulli(p)
    x = [0, 1]
    x_name = ['0', '1']
    pmf = [ber_dist.pmf(x[0]),ber_dist.pmf(x[1])]
    plt.bar(x, pmf, width = 0.15)
    plt.xticks(x,x_name)
    plt.ylabel('Probability')
    plt.title('Pmf of bernoulli distribution')
    plt.show()

bernoulli_pmf(p=0.3)

运行结果如下:

 2)二项分布

        如果把一个伯努利分布独立的重复n次,就得到了一个二次分布。


二项分布是最重要的离散型概率分布之一。


随机变量X要满足这个分布有两个重要条件:

  • 各次试验的条件是稳定的;
  • 各次试验之间是相互独立的;

下面利用python代码模拟抛一枚不均匀的硬币20次,设正面朝上的概率为0.6:

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

def binom_dis(n=1,p=0.1):
    binom_dis = stats.binom(n,p)
    x = np.arange(binom_dis.ppf(0.0001), binom_dis.ppf(0.9999))
    print(x)
    fig, ax = plt.subplots(1, 1)
    ax.vlines(x, binom_dis.pmf(x), 'bo', label='binom pmf')
    ax.legend(loc='best', frameon = False)
    plt.ylabel('Probability')
    plt.title('PMF of binomial distribution(n={},p={})'.format(n,p))
    plt.show()

binom_dis(n=20,p=0.6)

运行结果如下:

 3)泊松分布

        泊松分布的参数λ是单位时间(或单位面积)内随机事件的平均发生次数。


泊松分布适合于描述单位时间内随机事件发生的次数。


当二项分布的n很大而p很小时,泊松分布可作为二项分布的近似,其中λ为np。


通常当n≧20,p≦0.05时,就可以用泊松公式近似得计算。


事实上,泊松分布正是由二项分布推导而来的。


下面是参数μ=8时的泊松分布python实现,在Scipy中将泊松分布的参数表示为μ:

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

def poisson_pmf(mu=3):
    poisson_dis= stats.poisson(mu)
    x = np.arange(poisson_dis.ppf(0.001), poisson_dis.ppf(0.999))
    print(x)
    fig, ax = plt.subplots(1, 1)
    ax.plot(x, poisson_dis.pmf(x), 'bo', ms=8, label = 'poisson pmf')
    ax.legend(loc = 'best', frameon = False)
    plt.ylabel('Probability')
    plt.title('PMF of poisson distribution(mu={})'.format(mu))
    plt.show()

poisson_pmf(mu=8)

1.2 连续随机变量分布

1)均匀分布

        均匀分布也叫矩形分布,它是对称概率分布,在相同长度间隔的分布概率是等可能的。


均匀分布由两个参数a和b定义,它们是数轴上的最小值和最大值,通常缩写为U(a,b)。


在python中用location和scale分别表示起点和区间长度,代码如下:

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

def uniform_distribution(loc=0,scale=1):
    uniform_dis = stats.uniform(loc=loc,scale=scale)
    x = np.linspace(uniform_dis.ppf(0.01), uniform_dis.ppf(0.99), 100)
    fig, ax = plt.subplots(1, 1)

    #直接传入参数
    ax.plot(x, stats.uniform.pdf(x, loc=2, scale=4), 'r-', lw=5, alpha=0.6, label='uniform pdf')
    #从冻结的均匀分布取值
    ax.plot(x, uniform_dis.pdf(x), 'k-', lw=2, label='frozen pdf')
    #计算ppf分别等于0.001,0.5,0.999时的x值
    vals = uniform_dis.ppf([0.001, 0.5, 0.999])
    print(vals)#[2.004 4.    5.996]

    #检测cdf和ppf的精确度
    print(np.allclose([0.001, 0.5, 0.999], uniform_dis.cdf(vals)))#结果为True

    r = uniform_dis.rvs(size=10000)
    ax.hist(r, density=True, histtype='stepfilled', alpha=0.2)
    plt.ylabel('Probability')
    plt.title(r'PDF of Unit({}, {})'.format(loc, loc+scale))
    ax.legend(loc= 'best', frameon = False)
    plt.show()
    
uniform_distribution(loc=2,scale=4)

运行结果如下:

 2)指数分布

        指数分布(也称为负指数分布)是描述泊松过程中的事件之间的时间的概率分布,即事件以恒定平均速率连续且独立地发生的过程。


这表示如果一个随机变量呈指数分布,当s,t>0时有P(T>t+s|T>t)=P(T>s)。


即,假如你在排队接受服务的时间长短服从指数分布,那么无论你已经排了多久的队,在排t分钟的概率始终是相同的,代码如下:

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

def exponential_dis(loc=0, scale=1.0):
    '''
    指数分布按照定义只有一个参数lambda,这里的scale = 1/lambda
    param loc:定义域的左端点,相当于将整体分布沿x轴平移loc
    param scale:lambda的倒数,loc+scale表示改分布的均值,scale^2表示该分布的方差
    '''
    exp_dis = stats.expon(loc=loc, scale=scale)
    x = np.linspace(exp_dis.ppf(0.000001), exp_dis.ppf(0.999999), 100)
    fig, ax = plt.subplots(1, 1)

     #直接传入参数
    ax.plot(x, stats.expon.pdf(x, loc=loc, scale=scale), 'r-', lw=5, alpha=0.6, label='uniform pdf')
    #从冻结的均匀分布取值
    ax.plot(x, exp_dis.pdf(x), 'k-', lw=2, label='frozen pdf')
    #计算ppf分别等于0.001,0.5,0.999时的x值
    vals = exp_dis.ppf([0.001, 0.5, 0.999])
    print(vals)#[2.004 4.    5.996]

    #检测cdf和ppf的精确度
    print(np.allclose([0.001, 0.5, 0.999], exp_dis.cdf(vals)))

    r = exp_dis.rvs(size=10000)
    ax.hist(r, density=True, histtype='stepfilled', alpha=0.2)
    plt.ylabel('Probability')
    plt.title(r'PDF of Exp(0.5)')
    ax.legend(loc= 'best', frameon = False)
    plt.show()
    
exponential_dis(loc=0, scale=2)

运行结果如下:

 3)正态分布


二. 数理统计基础 2.1 抽样分布

1)卡方()分布

2)t分布

3)F分布

2.2 大数定律 2.3中心极限定理
总结

        本文为大家重点介绍了与人工智能有关的梳理统计方法,概率统计知识在人工智能领域发挥着非常重要的作用,如深度学习理论,概率图模型等都依赖于概率分布作为框架的基本建模语言,学习了解机器学习的概率统计对你的掌握百利无一害~~

        欢迎大家留言一起讨论问题~~~

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/567409.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-09
下一篇 2022-04-09

发表评论

登录后才能评论

评论列表(0条)

保存