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

news/2024/9/15 4:48:16/文章来源:https://www.cnblogs.com/xiaowange/p/18205065

随机数据分布

什么是数据分布?

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

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

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 npx = 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 npx = np.random.randn(10)
print(x)

随机排列

洗牌数组

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

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

import numpy as np
from numpy.random import shufflearr = 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 permutationarr = 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`,关注后即可获取最新文章推送看完如果觉得有帮助,欢迎点赞、收藏、关注

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/710257.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

「网络流浅谈」最小割的模型

总结了最小割的四个模型——最大权闭合图,最大密度子图,最小点覆盖集,最大权独立集。带你走进最小割的神秘!最大权闭合子图 引入 Introduction 闭合子图指对于子图 \(G=(V,E)\),\(\forall u \in V, (u,v)\in E\),都有 \(v\in V\)。 最大权闭合子图无非就是对于所有的闭合…

主流原型设计软件介绍

主流原型介绍 Axure Axure是一款强大的原型设计工具,它提供了丰富的功能,使设计师和产品经理能够快速创建互动原型和线框图,从而有效地传达设计思路和用户流程。 主要特点 1. 交互设计:Axure允许设计师创建高度互动的原型。通过拖放和设置各种交互动作(如点击、悬停、拖动等…

Strange Brigade(异域奇兵)全收集图文攻略

一、哈宾的挖掘场地 信件 1/7 起始位置往前走桥边帐篷桌子上猫猫 1/6 桥右转下坡转弯处猫猫 2/6 穿过洞穴第二个拱门上圣物 1/6 密室里信件 2/7 船边地上圣物 2/6 蝎子区进门靠右直走左转猫猫 3/6 蝎子区进门靠左上坡陶罐 1/4圣甲虫钥匙右边圣物 3/6 圣甲虫大门进去过场动画后一…

【DRF_02】基于Django CBV实现

路由系统from django.urls import path from app01.views import cbv_demourlpatterns = [# path(admin/, admin.site.urls),path(cbv/demo/, cbv_demo.StudentsView.as_view()), ]CBV视图from django.views import View from django.shortcuts import HttpResponse from djang…

考核复现-cnblog

考核复现 web 签到 源代码base64解密文件上传 先简单上传一个图片这里的类型被限制了,只允许上传哈哈类型的,修改一下吧上传成功 连接成功好玩的PHP 前一部分用数组绕过,后一部分将c赋值,用data伪协议绕过file_get_contents()函数 构造payload:?a[]=1&b[]=2&c=ab…

智能计算系统-Tensorflow框架的计算图机制

智能计算系统-Tensorflow框架的计算图机制 陈云霁老师的课,趁现在有时间,打算了解深度学习的底层原理。 从第五章编程框架机理开始,一到四章是深度学习基础,在此不再讨论 一. 深度学习框架的设计原则 1. 高性能 主要体现在神经网络的算子,针对底层硬件进行充分优化 在计算…

用户与组管理

一、服务器版本 windows服务器系统:win2003 、win2008、win2012、win2019 linux服务器系统:Redhat(开源收费(售后))、Centos(开源不收费) 二、用户概述1、每一个用户登录系统后,拥有不同的操作权限2、每个账户又自己唯一的SID(安全标识符) 为什么要分不同的用户 3、配…

ntfs

储备: 首先需要明白什么是文件系统。文件系统是系统对文件的存放排列方式,不同格式的文件系统关系到数据是如何在磁盘进行存储,文件名、文件权限和其他属性也存在不同。Windows操作系统支持 NTFS, FAT32, and exFAT三种不同文件系统。NTFS是目前Windows系统中一种现代文件系…

Chart.js (v2.9.4)概要介绍

chart.js是一个非常优秀的开源图表插件,扩展非常灵活,同时也提供了大量的钩子函数,给与用户添加自定义插件,实现个性化的需求。 具体的优势特点,这里不详述,网上大把资料,现开始正式深入了解这个插件.Chart布局大概分为如下六个区域,这些是主要的,也有些特殊,比如左右…

window版postgresql安装orafce插件

在Visual Studio中创建一个新的C工程:将解压目录下的除.sql和文件夹之外的文件都copy到新创建的工程中,另外要将sqlscan.c排除在项目之外 配置编译选项配置预处理器,预处理器定义中的内容为: WIN32 _WINDOWS _DEBUG _CRT_SECURE_NO_WARNINGS 注意要有_CRT_SECURE_NO_WARNI…