• NumPy 随机数据分布与 Seaborn 可视化详解


    随机数据分布

    什么是数据分布?

    数据分布是指数据集中所有可能值出现的频率,并用概率来表示。它描述了数据取值的可能性。

    在统计学和数据科学中,数据分布是分析数据的重要基础。

    NumPy 中的随机分布

    NumPy 的 random 模块提供了多种方法来生成服从不同分布的随机数。

    生成离散分布随机数

    choice(a, p, size):从数组 a 中随机选择元素,并根据概率 p 进行选择。
    a:源数组,包含所有可能值。
    p:每个值的概率数组,总和必须为 1。
    size:输出数组的形状。

    示例:生成 100 个随机数,其中 3 出现的概率为 0.2,5 出现的概率为 0.4,7 出现的概率为 0.3,9 出现的概率为 0.1:

    import numpy as np
    x = np.random.choice([3, 5, 7, 9], p=[0.2, 0.4, 0.3, 0.1], size=100)
    print(x)

    生成连续分布随机数

    NumPy 提供了多种方法来生成服从不同连续分布的随机数,例如正态分布、均匀分布、指数分布等。

    randn(size):生成服从标准正态分布的随机数。
    rand(size):生成服从均匀分布的随机数。
    beta(a, b, size):生成服从 Beta 分布的随机数。
    gamma(shape, scale, size):生成服从 Gamma 分布的随机数。
    poisson(lam, size):生成服从泊松分布的随机整数。

    示例:生成 10 个服从标准正态分布的随机数:

    import numpy as np
    x = np.random.randn(10)
    print(x)

    随机排列

    洗牌数组

    shuffle(arr):对数组 arr 进行随机洗牌,修改原始数组。

    示例:随机洗牌数组 [1, 2, 3, 4, 5]

    import numpy as np
    from numpy.random import shuffle
    arr = np.array([1, 2, 3, 4, 5])
    shuffle(arr)
    print(arr)

    生成数组的随机排列

    permutation(arr):生成数组 arr 元素的随机排列,不修改原始数组。

    示例:生成数组 [1, 2, 3, 4, 5] 的随机排列:

    import numpy as np
    from numpy.random import permutation
    arr = np.array([1, 2, 3, 4, 5])
    x = permutation(arr)
    print(x)

    练习

    1. 使用 choice 方法生成 200 个随机数,其中 1 出现的概率为 0.1,2 出现的概率为 0.2,3 出现的概率为 0.7。
    2. 生成 10 个服从指数分布的随机数。
    3. 对数组 [10, 20, 30, 40, 50] 进行随机洗牌。
    4. 生成数组 [6, 7, 8, 9, 10] 元素的随机排列。

    解决方案

    import numpy as np
    from numpy.random import choice, permutation, expon
    # 1. 使用 choice 方法生成随机数
    random_numbers = choice([1, 2, 3], p=[0.1, 0.2, 0.7], size=200)
    print(random_numbers)
    # 2. 生成服从指数分布的随机数
    exponential_randoms = expon(scale=1, size=10)
    print(exponential_randoms)
    # 3. 对数组进行随机洗牌
    arr = np.array([10, 20, 30, 40, 50])
    shuffle(arr)
    print(arr)
    # 4. 生成数组的随机排列
    random_permutation = permutation([6, 7, 8, 9, 10])
    print(random_permutation)

    使用 Seaborn 可视化分布

    简介

    Seaborn 是一个基于 Matplotlib 的 Python 数据可视化库,用于创建统计图表。它提供了一系列高级绘图函数,可以轻松创建美观且信息丰富的统计图形。

    安装 Seaborn

    如果您已经安装了 Python 和 pip,可以使用以下命令安装 Seaborn:

    pip install seaborn

    如果您使用的是 Jupyter Notebook,可以使用以下命令安装 Seaborn:

    !pip install seaborn

    绘制分布图

    分布图是一种可视化数据分布的图表。它显示了数据集中每个值的出现频率。

    在 Seaborn 中,可以使用 sns.distplot() 函数绘制分布图。该函数接受以下参数:

    data:要绘制分布的数据。可以是数组、列表或 Pandas 数据框。
    hist:如果为 True(默认),则绘制直方图;如果为 False,则只绘制密度曲线。
    kde:如果为 True(默认),则使用核密度估计 (KDE) 来估计数据的分布;如果为 False,则使用直方图。
    bins:用于创建直方图的直方图数量。
    norm:用于规范分布的类型。例如,norm='kde' 将使用 KDE 来规范分布。

    示例:绘制正态分布

    以下示例演示如何使用 Seaborn 绘制正态分布:

    import seaborn as sns
    import numpy as np
    # 生成随机数据
    data = np.random.randn(1000)
    # 绘制分布图
    sns.distplot(data)
    plt.show()

    该代码将生成 1000 个服从标准正态分布的随机数,并使用 Seaborn 绘制它们的分布图。

    示例:绘制自定义分布

    以下示例演示如何绘制自定义分布:

    import seaborn as sns
    import numpy as np
    # 生成自定义数据
    data = [1, 2, 2, 3, 3, 3, 4, 4, 5, 5, 6, 7, 7, 8, 9]
    # 绘制分布图
    sns.distplot(data, hist=False, kde=False)
    plt.show()

    该代码将生成一个包含重复值的自定义数据数组,并使用 Seaborn 绘制它们的分布图,不显示直方图或密度曲线。

    练习

    1. 生成 500 个服从均匀分布的随机数,并绘制它们的分布图。
    2. 生成 1000 个服从指数分布的随机数,并绘制它们的分布图。
    3. 从以下数据中绘制分布图:
    data = [23, 37, 43, 29, 31, 32, 36, 27, 31, 33, 34, 25, 27, 28, 42, 38, 27, 27, 33, 31, 26, 29, 31, 35, 33, 30, 30, 32, 36, 28, 31, 33, 38, 29, 31, 31, 34, 36, 26, 25, 26, 34, 37, 28, 36, 31, 29, 31, 27, 28, 32, 37, 30, 33, 33, 27, 31, 32, 32, 36, 25, 32, 35, 37, 37, 30, 31, 34, 33, 29, 32, 31, 36, 26, 29, 31, 37, 28, 28, 37, 31, 32, 36, 33, 27, 31, 32, 33, 32, 32, 30, 27, 36, 38, 35, 26, 32, 37, 31, 30, 33, 30, 27,
    ## 最后
    为了方便其他设备和平台的小伙伴观看往期文章:
    微信公众号搜索:`Let us Coding`,关注后即可获取最新文章推送
    看完如果觉得有帮助,欢迎点赞、收藏、关注
  • 相关阅读:
    复习单片机:中断系统(内含1.中断概念+2 中断结构及相关寄存器)(注:相关寄存器是重点)
    基于Java+小程序点餐系统设计与实现(源码+部署文档)
    目录遍历漏洞
    Unity之ShaderGraph节点介绍 Artistic艺术效果
    “客户要将赠品换为折扣”,客服如何回复?
    C#【必备技能篇】精确计时(延时)的方法
    大数据之巅:深入分析数据湖架构的优势
    从入门到精通,收下这 22 个 Python 学习网站
    深度学习模型相关部署的学习:(yolov5)WIN10+CUDA11.3+TensorRT
    中睿天下荣获2023全国智能驾驶测试赛车联网安全比赛第一名
  • 原文地址:https://www.cnblogs.com/xiaowange/p/18205065