• NumPy 二项分布生成与 Seaborn 可视化技巧


    二项分布

    简介

    二项分布是一种离散概率分布,用于描述在固定次数的独立试验中,事件“成功”的次数的概率分布。它通常用于分析诸如抛硬币、做选择题等具有两个结果(成功或失败)的事件。

    参数

    二项分布用三个参数来定义:

    n:试验次数,表示重复相同实验的次数。
    p:每次试验中成功事件发生的概率。
    k:成功事件发生的次数,范围为 0 到 n。

    公式

    二项分布的概率质量函数 (PMF) 给出了在 n 次试验中恰好获得 k 次成功的概率,计算公式为:

    P(k) = C(n, k) p^k (1 - p)^(n - k)

    其中:

    C(n, k) 是组合数,表示从 n 个元素中选取 k 个元素的方案数。
    p^k 表示 k 次成功的概率。
    (1 - p)^(n - k) 表示 n - k 次失败的概率。

    生成二项分布数据

    NumPy 提供了 random.binomial() 函数来生成服从二项分布的随机数。该函数接受以下参数:

    n:试验次数。
    p:每次试验中成功事件发生的概率。
    size:输出数组的形状。

    示例:生成 10 次试验中,每次成功概率为 0.5 的事件的成功次数:

    import numpy as np
    data = np.random.binomial(n=10, p=0.5, size=10)
    print(data)

    可视化二项分布

    Seaborn 库提供了便捷的函数来可视化分布,包括二项分布。

    示例:绘制 100 次试验中,每次成功概率为 0.6 的事件的成功次数分布:

    import seaborn as sns
    import numpy as np
    data = np.random.binomial(n=100, p=0.6, size=1000)
    sns.distplot(data)
    plt.show()

    正态分布与二项分布的关系

    当试验次数 n 很大,成功概率 p 接近 0.5 时,二项分布可以近似为正态分布。其均值 μ 为 np,标准差 σ 为 sqrt(np(1 - p))。

    示例:比较二项分布和正态分布的形状:

    import seaborn as sns
    import numpy as np
    n = 100
    p = 0.5
    # 生成二项分布数据
    data_binomial = np.random.binomial(n=n, p=p, size=1000)
    # 生成正态分布数据
    mu = n p
    sigma = np.sqrt(n p (1 - p))
    data_normal = np.random.normal(loc=mu, scale=sigma, size=1000)
    sns.distplot(data_binomial, label="Binomial")
    sns.distplot(data_normal, label="Normal")
    plt.legend()
    plt.show()

    练习

    1. 在 50 次试验中,每次成功概率为 0.2 的事件,模拟成功次数并绘制分布图。
    2. 比较不同试验次数下二项分布形状的变化。
    3. 利用二项分布来模拟一次 10 道选择题的考试,每题答对的概率为 0.7,并计算平均分和及格率(60 分及格)。

    解决方案

    import seaborn as sns
    import numpy as np
    import matplotlib.pyplot as plt
    # 1. 模拟成功次数并绘制分布图
    data = np.random.binomial(n=50, p=0.2, size=1000)
    sns.distplot(data)
    plt.show()
    # 2. 比较不同试验次数下二项分布形状的变化
    n_values = [10, 50, 100, 500]
    for n in n_values:
    data = np.random.binomial(n=n, p=0.5, size=1000)
    sns.distplot(data, label=f"n={n}")
    plt.legend()
    plt.show()
    # 3. 模拟考试成绩并计算平均分和及格率
    scores

    最后

    为了方便其他设备和平台的小伙伴观看往期文章:

    微信公众号搜索:Let us Coding,关注后即可获取最新文章推送

    看完如果觉得有帮助,欢迎点赞、收藏、关注

  • 相关阅读:
    LeetCode --- 2. Add Two Numbers 解题报告
    c++编程实例
    深度学习:基于循环神经网络RNN实现自然语言生成
    数据库备份
    C++学习记录(二)
    c++/win32实现模拟windows鼠标键盘操作
    LORS:腾讯提出低秩残差结构,瘦身模型不掉点 | CVPR 2024
    Unity Substance材质
    大模型,重构自动驾驶
    MC 我的世界 模拟城市模拟大都市 模组下载及整合包导入详解
  • 原文地址:https://www.cnblogs.com/xiaowange/p/18216487