zoukankan      html  css  js  c++  java
  • Python实现概率分布(二项分布、伯努利分布、泊松分布、几何分布、正态分布等)

    1.二项分布
    #导入包
    import numpy as np
    import matplotlib.pyplot as plt
    
    from scipy import stats
    from pylab import mpl
    mpl.rcParams['font.sans-serif'] = ['SimHei']
    
    #生成一个数组
    X1 = np.arange(0, 2, 1)
    X1
    p1 = 0.5
    pList1 = stats.bernoulli.pmf(X1,p1)
    pList1
    
    #plot默认绘制折线
    #marker:点的形状,值o表示点为圆圈标记(circle marker)
    #linestyle:线条的形状,值None表示不显示连接各个点的折线
    
    plt.plot(X1,pList1,marker='o', linestyle='None')
    #vlines用于绘制竖直线(vertical lines),
    #参数说明:vline(x坐标值, y坐标最小值, y坐标值最大值)
    #我们传入的X是一个数组,是给数组中的每个x坐标值绘制竖直线,
    #竖直线y坐标最小值是0,y坐标值最大值是对应pList1中的值
    plt.vlines(X1,0,pList1)
    plt.xlabel('随机变量:抛1次硬币')
    plt.ylabel('概率')
    plt.title('伯努利分布: p=%.2f' % p1)
    plt.show()
    
    二项分布
    n2 = 5
    p2 = 0.5
    X2 = np.arange(0, n2+1,1)
    X2
    
    pList2 = stats.binom.pmf(X2,n2,p2)
    pList2
    
    plt.plot(X2,pList2,marker='o',linestyle='None')
    
    plt.vlines(X2,0,pList2)
    plt.xlabel('随机变量:抛硬币正面朝上的次数')
    plt.ylabel('概率')
    plt.title('二项分布: n=%i,p=%.2f' %(n2,p2))
    plt.show()
    
    几何分布

    几何分布就是在n次伯努利试验中,试验k次才得到第一次成功的机率。

    n2 = 5
    p2 = 0.5
    X2 = np.arange(0,n2+1,1)
    X2
    
    pList2 = stats.binom.pmf(X2,n2,p2)
    pList2
    
    plt.plot(X2,pList2,marker='o',linestyle='None')
    
    plt.vlines(X2,0,pList2)
    plt.xlabel('随机变量:抛硬币正面朝上的次数')
    plt.ylabel('概率')
    plt.title('二项分布:n=%i,p=%.2f' % (n2,p2))
    plt.show()
    
    泊松分布

    泊松分布描述的是已知一段时间内事件发生的平均数,求某个时间内发生的概率。

    mu4 = 2
    k4 = 4
    X4 = np.arange(0, k4+1,1)
    X4
    
    pList4 = stats.poisson.pmf(X4,mu4)
    pList4
    print('X4:',X4)
    print('pList4', pList4)
    
    plt.plot(X4,pList4,marker='o',linestyle='None')
    plt.vlines(X4,0,pList4)
    plt.xlabel('某路口发生K次事故')
    plt.ylabel('概率')
    plt.title('泊松分布:平均值mu=%i' % mu4)
    plt.show()
    
    正态分布
    mu5 = 0
    sigma = 1
    X5 = np.arange(-5,5,0.1)
    X5
    
    y = stats.norm.pdf(X5,mu5,sigma)
    print('X5',X5)
    print('y:',y)
    
    plt.plot(X5,y)
    plt.xlabel('随机变量:x')
    plt.ylabel('概率:y')
    plt.title('正态分布:$mu$=%.1f,$sigma^2$=%.1f' %(mu5,sigma))
    plt.grid()
    plt.show()
    
  • 相关阅读:
    智能手表如何救人一命?
    人工智能、机器学习和认知计算入门指南
    PO VO BO DTO POJO DAO的解释
    web UI框架推荐
    面向切面编程AOP
    阿里巴巴java开发规范
    如何理解Spring IOC
    HTML5 3D旋转图片相册
    JSON总结笔记
    轮播图---可以动态添加图片,(封装成一个函数)
  • 原文地址:https://www.cnblogs.com/youchi/p/11968199.html
Copyright © 2011-2022 走看看