• NumPy 正态分布与 Seaborn 可视化指南


    正态分布(高斯分布)

    简介

    正态分布(也称为高斯分布)是一种非常重要的概率分布,它描述了许多自然和人为现象的数据分布情况。正态分布的形状呈钟形,其峰值位于平均值处,两侧对称下降。

    特征

    正态分布可以用两个参数来完全描述:

    均值(μ):表示数据的平均值,分布的峰值位于 μ 处。
    标准差(σ):表示数据的离散程度,数值越大,分布越平坦。

    生成正态分布数据

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

    loc:正态分布的均值,默认为 0。
    scale:正态分布的标准差,默认为 1。
    size:输出数组的形状。

    示例:生成 100 个服从正态分布的随机数,均值为 5,标准差为 2:

    import numpy as np
    data = np.random.normal(loc=5, scale=2, size=100)
    print(data)

    可视化正态分布

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

    示例:绘制服从正态分布的数据的分布图:

    import seaborn as sns
    import numpy as np
    data = np.random.normal(size=1000)
    sns.distplot(data)
    plt.show()

    应用

    正态分布在许多领域都有应用,例如:

    统计学:用于推断总体参数,进行假设检验等。
    机器学习:用于数据预处理,特征工程等。
    金融:用于建模股票价格、汇率等金融数据。
    工程:用于控制质量、可靠性分析等。

    练习

    1. 生成 500 个服从正态分布的随机数,均值为 10,标准差为 3,并绘制它们的分布图。
    2. 比较不同标准差下正态分布形状的变化。
    3. 利用正态分布来模拟一次考试成绩,并计算平均分和标准分。

    解决方案

    import seaborn as sns
    import numpy as np
    import matplotlib.pyplot as plt
    # 1. 生成服从正态分布的随机数并绘制分布图
    data = np.random.normal(loc=10, scale=3, size=500)
    sns.distplot(data)
    plt.show()
    # 2. 比较不同标准差下正态分布形状的变化
    sns.distplot(np.random.normal(size=1000, scale=1), label="σ=1")
    sns.distplot(np.random.normal(size=1000, scale=2), label="σ=2")
    sns.distplot(np.random.normal(size=1000, scale=3), label="σ=3")
    plt.legend()
    plt.show()
    # 3. 模拟考试成绩并计算平均分和标准分
    scores = np.random.normal(loc=80, scale=10, size=100)
    print("平均分:", scores.mean())
    print("标准分:", (scores - scores.mean()) / scores.std())

    解释:

    在第一个练习中,我们生成了 500 个服从正态分布的随机数,均值为 10,标准差为 3,并使用 Seaborn 的 distplot() 函数绘制了它们的分布图。
    在第二个练习中,我们生成了三个服从正态分布的数据集,分别设置标准差为 1、2 和 3,并使用 Seaborn 的 distplot() 函数绘制了它们的分布图。我们可以观察到,随着标准差的增加,分布变得更加平坦,两侧的尾巴更加明显。
    在第三个练习中,我们模拟了一次考试成绩,假设成绩服从正态分布,均值为 80,标准差为 10。然后,我们计算了考试成绩的平均分和标准分。

    最后

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

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

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

  • 相关阅读:
    ts工具类
    SpringBoot-logback不同业务模块输出不同的日志文件
    java元注解
    wps、office插入的复选框无法设置字体及大小?教你一招
    在System身份运行的.NET程序中以指定的用户身份启动可交互式进程
    1. 使用STM32CubeMX建立STM32G030C8T6项目工程
    基于信通院 Serverless 工具链模型的实践:Serverless Devs
    java计算机毕业设计计算机公共课程学习资源管理系统MyBatis+系统+LW文档+源码+调试部署
    爬虫用什么库更事半功倍?
    11、Vue的生命周期
  • 原文地址:https://www.cnblogs.com/xiaowange/p/18209447