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:

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

生成连续分布随机数

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

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

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

1import numpy as np 2 3x = np.random.randn(10) 4print(x)

随机排列

洗牌数组

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

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

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

生成数组的随机排列

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

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

1import numpy as np 2from numpy.random import permutation 3 4arr = np.array([1, 2, 3, 4, 5]) 5 6x = permutation(arr) 7print(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] 元素的随机排列。

解决方案

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

使用 Seaborn 可视化分布

简介

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

安装 Seaborn

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

1pip install seaborn

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

1!pip install seaborn

绘制分布图

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

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

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

示例:绘制正态分布

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

1import seaborn as sns 2import numpy as np 3 4# 生成随机数据 5data = np.random.randn(1000) 6 7# 绘制分布图 8sns.distplot(data) 9plt.show()

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

示例:绘制自定义分布

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

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

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

练习

  1. 生成 500 个服从均匀分布的随机数,并绘制它们的分布图。
  2. 生成 1000 个服从指数分布的随机数,并绘制它们的分布图。
  3. 从以下数据中绘制分布图:
1data = [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, 2 3## 最后 4 5为了方便其他设备和平台的小伙伴观看往期文章: 6 7微信公众号搜索:`Let us Coding`,关注后即可获取最新文章推送 8 9看完如果觉得有帮助,欢迎点赞、收藏、关注
点赞
收藏

评论区

加载中...

相关推荐

Mock 语法讲解

是生成随机数据,拦截Ajax请求的JavaScript库。本文来介绍下Mock的常用语法。模拟数据生成随机数据Mock.Random.boolean()生成一个随机的布尔值。例如:返回值为true或false。Mock.Random.integer(min

用python重温统计学基础:描述性统计分析

描述性统计分析(DescriptionStatistics)是通过图表或数学方法,对数据资料进行整理、分析,并对数据的分布状态、数字特征和随机变量之间的关系进行

用python重温统计学基础:离散型概率分布

简单介绍数据的分布形态描述中的离散型概率分布利用python中的matplotlib来模拟几种分布的图形在上一篇中提到数据分析的对象主要是结构化化数据,而所有的结构化数据可以从三个维度进行描述,即数据的集中趋势描述,数据的离散程度描述和数据的分布形态描述,并对前两个维度进行了介绍。本篇主要是对数据的分布形态描述中的离散型概率分布进行介绍。

TensorFlow——LinearRegression简单模型代码

代码函数详解tf.random.truncated\_normal()函数tf.truncated\_normal函数随机生成正态分布的数据,生成的数据是截断的正态分布,截断的标准是2倍的stddev。zip()函数zip() 函数用于将可迭代对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象。如果各个可迭代对象的

NumPy 均匀分布模拟及 Seaborn 可视化教程

本文介绍了均匀分布和逻辑分布。均匀分布是连续概率分布,所有事件在指定范围内有相等概率发生,常用于随机数生成。其概率密度函数为f(x)1/(ba),其中a和b分别为下限和上限。NumPy的random.uniform()可生成均匀分布的随机数。Seaborn可用于可视化分布。文中还提供了练习及解决方案,包括生成不同范围的均匀分布随机数、比较分布形状变化及模拟抛硬币实验。逻辑分布则常用于S形增长现象的建模,其PDF为(scale/(π(1(xloc)/scale)^2)),由位置参数loc和尺度参数scale定义。

多项分布模拟及 Seaborn 可视化教程

多项分布是二项分布的推广,描述了在n次试验中k种不同事件出现次数的概率分布。参数包括试验次数n、结果概率列表pvals(和为1)和输出形状size。PMF公式展示了各结果出现次数的概率。NumPy的random.multinomial()可生成多项分布数据。练习包括模拟掷骰子和抽奖活动。解决方案提供了相关图表绘制代码。关注公众号“LetusCoding”获取更多内容。