大数据HCIE成神之路之数学(3)——概率论

概率论

    • 1.1 概率论内容介绍
      • 1.1.1 概率论介绍
      • 1.1.2 实验介绍
    • 1.2 概率论内容实现
      • 1.2.1 均值实现
      • 1.2.2 方差实现
      • 1.2.3 标准差实现
      • 1.2.4 协方差实现
      • 1.2.5 相关系数
      • 1.2.6 二项分布实现
      • 1.2.7 泊松分布实现
      • 1.2.8 正态分布
      • 1.2.9 指数分布
      • 1.2.10 中心极限定理的验证

1.1 概率论内容介绍

1.1.1 概率论介绍

概率论是研究随机现象数量规律的数学分支。随机现象是相对于决定性现象而言的,在一定条件下必然发生某一结果的现象称为 决定性现象

概率论是用来描述不确定性的数学工具,很多数据挖掘中的算法都是通过描述样本的概率相关信息或推断来构建模型。

1.1.2 实验介绍

本章节主要实现概率与统计相关的知识点,主要用到的框架是 numpyscipy 框架。

1.2 概率论内容实现

导入相应库:

import numpy as np 
import scipy as sp 

1.2.1 均值实现

数据准备:

ll = [[1,2,3,4,5,6],[3,4,5,6,7,8]]

代码输入:

np.mean(ll) 	#全部元素求均值

结果输出:

4.5
np.mean(ll,0) #按列求均值,0代表列向量

结果输出:

array([2., 3., 4., 5., 6., 7.])
np.mean(ll,1)	#按行求均值,1表示行向量

结果输出:

array([3.5, 5.5])

1.2.2 方差实现

数据准备:

b=[1,3,5,6]
ll=[[1,2,3,4,5,6],[3,4,5,6,7,8]]

求方差(variance):

np.var(b)

结果输出:

3.6875

代码输入:

np.var(ll,1)	#第二个参数为1,表示按行求方差

结果输出:

[2.91666667 2.91666667]

解释:按行求方差,所以可以将ll拆开来计算也是可以得到一样的结果的

aa = [1,2,3,4,5,6]
np.var(aa)
bb = [3,4,5,6,7,8]
np.var(bb)

得到的结果都是 2.9166666666666665 ,保留8位小数点,则是2.91666667。

自行实践:

ttt,ddd = np.var(ll,1)
print(ttt, ddd)

思考:为什么aa与bb的方差都是一样的?

方差的意义:方差反映了一组数据与其平均值的偏离程度。 通常用方差来衡量一组数据的稳定性,方差越大,波动性越大;方差越小,波动性越小,也就越稳定。很明显,aa的平均值是3.5,bb的平均值是5.5,两者与其平均值的偏离程度是一样的,所以两者的方差一样。

注意:平均值相同,并不代表着方差相同。如:

aaa=[0,5,9,14]
bbb=[5,6,8,9]

两者的平均值都是7,但是方差却不相同,凭直觉上说,很明显aaa的元素偏离7要大一些,所以,凭直觉也是可以知道aaa的方差要比bbb的更大一些。

1.2.3 标准差实现

数据准备:

ll=[[1,2,3,4,5,6],[3,4,5,6,7,8]]

代码输入:

np.std(ll)

结果输出:

1.9790570145063195

补充:标准差也称为均方差,标准差是方差的算术平方根。

思考:为什么有了方差还有有标准差?
其实简单一句话解释就是,让计算结果不要与其自身的元素相差太大(单位一致)。

比如:

aaa=[0,5,9,14]
np.var(aaa)

计算结果是 26.5 ,可以发现,经过一个平方后,其方差的值26.5与其自身的元素(0,5,9,14)其实相差比较大了,我们可以再开个方根回来,让其值于原来的元素不要相差那么大,保持数据的单位一致。实际上np.std(aaa)的计算结果是 5.1478150704935

尝试: aaa=[0,50,90,140] ,请计算方差与标准差。

参考解释:有了方差为什么需要标准差?

1.2.4 协方差实现

数据准备:

b=[1,3,5,6]

代码输入:

np.cov(b)

结果输出:

4.916666666666666

补充: 协方差 (Covariance)在概率论和统计学中用于衡量 两个变量 的总体误差。而 方差 是协方差的一种特殊情况,即当 两个变量是相同 的情况。

说明:

b=[5,5]
np.cov(b)
np.std(b)

输出结果是一样的!b=[5,5,5,5,5]也是一样的。

1.2.5 相关系数

数据准备:

vc=[1,2,39,0,8]
vb=[1,2,38,0,8]

利用函数实现:

np.corrcoef(vc,vb)

结果输出:

array([[1.        , 0.99998623],[0.99998623, 1.        ]])

解释:输出结果是一个2x2的NumPy数组,表示两个变量 vc 和 vb 之间的相关系数矩阵。相关系数矩阵是一个对称矩阵,其中对角线上的元素是各自变量与自身的相关系数,而非对角线上的元素是两个不同变量之间的相关系数。

  • 1.0 :对角线上的元素表示每个变量与自身的相关系数。由于变量与自身完全相关,所以相关系数为1.0。

  • 0.99998623 :非对角线上的元素表示两个不同变量之间的相关系数。在这种情况下,vc 和 vb 之间的相关系数非常接近1.0,约为0.99998623。这表明这两个变量之间存在着极强的正线性相关性。

相关系数矩阵的结果表明变量 vc 和 vb 之间具有非常强的正线性相关性,即当一个变量增加时,另一个变量也会增加,且变化趋势非常相似。相关系数接近1.0表示它们之间的线性关系非常密切。

补充:coordination(协调、配合、协作)、 coefficient(系数)

1.2.6 二项分布实现

服从二项分布的随机变量X表示在n次独立同分布的伯努利试验中成功的次数,其中每次试验的成功概率为p。

from scipy.stats import binom, norm, beta, expon
import numpy as np
import matplotlib.pyplot as plt#n,p对应二项式公式中的事件成功次数及其概率,size表示采样次数,使用二项分布的rvs()函数生成了一个包含10000个样本的随机样本数组
binom_sim = binom.rvs(n=10, p=0.3, size=10000)
print('Data:',binom_sim)
print('Mean: %g' % np.mean(binom_sim))
print('SD: %g' % np.std(binom_sim, ddof=1)) # 当ddof=0时,表示总体标准差,为1时,表示样本的标准差。
#生成直方图,x指定每个bin(箱子)分布的数据,对应x轴,binx是总共有几条条状图,density值密度,也就是每个条状图的占比例比,默认为1
plt.hist(binom_sim, bins=10, density=True)
plt.xlabel(('x'))
plt.ylabel('density')
plt.show()

解释:二项分布(binom)、正态分布(norm)、贝塔分布(beta)和指数分布(expon),binom.rvs()函数生成的数据范围是从0到n之间的整数,其中n是二项分布的参数之一。类似于扔硬币,硬币有点特殊,扔10次,可能会有3次是人像面朝上(成功的概率)。所以,实际上扔下来,可能会有偏差的,请看下面的图像结果。

说明:旧版本是使用normed表示值密度,新版本是用density,直接替换即可,效果一样。

结果输出:

Data: [2 2 4 ... 1 4 2]
Mean: 2.9918
SD: 1.4365

二项分布图如下:
在这里插入图片描述

1.2.7 泊松分布实现

一个服从泊松分布的随机变量X,表示在具有比率参数λ的一段固定时间间隔内,事件发生的次数。参数λ告诉你该事件发生的比率。随机变量X的平均值和方差都是λ。

import numpy as np
import matplotlib.pyplot as plt#产生10000个符合lambda=2的泊松分布的数
X= np.random.poisson(lam=2, size=10000)  
a = plt.hist(X, bins=15, density=True, range=[0, 15])#生成网格
plt.grid()
plt.show()

泊松分布图如下:
在这里插入图片描述

1.2.8 正态分布

正态分布 是一种连续分布,其函数可以在实线上的任何地方取值。正态分布由两个参数描述:分布的平均值μ和标准差σ 。

from scipy.stats import norm
import numpy as np
import matplotlib.pyplot as pltmu = 0
sigma = 1#分布采样点
x = np.arange(-5, 5, 0.1)
#生成符合mu,sigma的正态分布
y = norm.pdf(x, mu, sigma)
plt.plot(x, y)
plt.xlabel('x')
plt.ylabel('density')
plt.show()

分布图如下:
在这里插入图片描述

1.2.9 指数分布

指数分布是一种连续概率分布,用于表示独立随机事件发生的时间间隔。比如旅客进入机场的时间间隔、打进客服中心电话的时间间隔等。

from scipy.stats import expon
import numpy as np
import matplotlib.pyplot as pltlam = 0.5
#分布采样点
x = np.arange(0, 15, 0.1)
#生成符合lambda为0.5的指数分布
y = expon.pdf(x, lam)
plt.plot(x, y)
plt.title('Exponential: lam=%.2f' % lam)
plt.xlabel('x')
plt.ylabel('density')
plt.show()

分布图如下:
在这里插入图片描述

1.2.10 中心极限定理的验证

中心极限定理证明了一系列相互独立的随机变量的和的极限分布为正态分布。即使总体本身不服从正态分布,只要样本组数足够多即可让中心极限定理发挥作用。此实验用于验证中心极限定理。

生成数据。假设观测一个人掷骰子,掷出1~6的概率都是相同的:1/6。掷了一万次。

import numpy as np
import matplotlib.pyplot as plt
#随机产生10000个范围为(1,6)的数
ramdon_data = np.random.randint(1,7,10000)
print(ramdon_data.mean())
print(ramdon_data.std())

输出结果:

3.4821
1.7102279351010499

生成直方图:

plt.figure()
plt.hist(ramdon_data,bins=6,facecolor='blue')
plt.xlabel('x')
plt.ylabel('n')
plt.show()

分布图如下:
在这里插入图片描述
图解:投掷1万次,掷出1-6的次数相差无几。

随机抽取10个数据:

sample1 = []#从生成的1000个数中随机抽取10个
for i in range(1,10):# int(np.random.random()*len(ramdon_data))为随机生成范围为(0,10000)的整数sample1.append(ramdon_data[int(np.random.random()*len(ramdon_data))])sample1 = np.array(sample1)
print(sample1)
print(sample1.mean())
print(sample1.std())

输出如下:

[2 1 3 2 2 2 3 5 1]
2.3333333333333335
1.1547005383792515

随机抽取1000组数据,每组50个:

samples = []
samples_mean =[]
samples_std = []#从生成的1000个数中随机抽取1000组
for i in range(0,1000):sample = []#每组随机抽取50个数for j in range(0,50):sample.append(ramdon_data[int(np.random.random() * len(ramdon_data))])#将这50个数组成一个array放入samples列表中sample_ar = np.array(sample)samples.append(sample_ar)#保存每50个数的均值和标准差samples_mean.append(sample_ar.mean())
samples_std.append(sample_ar.std())
#samples_std_ar = np.array(samples_std)
#samples_mean_ar = np.array(samples_mean)
#print(samples_mean_ar)

生成直方图:

plt.figure()
#根据抽取的1000数据的均值,生成直方图,10个条形柱,柱的颜色为蓝色
plt.hist(samples_mean,bins=10,facecolor='blue')
plt.xlabel('x')
plt.ylabel('n')
plt.show()

分布图如下:
在这里插入图片描述
图解:相互独立的随机变量的和的极限分布为正态分布

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

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

相关文章

PostgreSQL基于Citus实现的分布式集群

📢📢📢📣📣📣 哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】!😜&am…

MongoDB相关基础操作(库、集合、文档)

文章目录 一、库的相关操作1、查看数据库2、查看当前库3、创建数据库4、删除数据库 二、集合的相关操作1、查看库中所有集合2、创建集合2.1、显示创建2.2、隐式创建 3、删除集合 三、文档的相关操作1、插入文档1.1、插入单条文档1.2、插入多条文档1.3、脚本方式 2、查询文档3、…

cloud的概念

"Cloud"(云)通常指的是云计算(cloud computing)领域。云计算是一种通过网络(通常是互联网)提供计算资源和服务的模型。这些计算资源包括计算能力、存储空间、数据库、网络、分析能力等。云计算模…

PHP 数据类型转换学习资料

PHP 数据类型转换 在 PHP 中,您可以使用内置的类型转换函数来将一个数据类型转换为另一个数据类型。这些函数可以帮助您在程序中进行数据类型的转换和操作。以下是一些常用的 PHP 数据类型转换函数: 1. 转换为字符串类型 (string) $variable&#xff…

python 就是随便玩玩,生成gif图,生成汉字图片,超级简单

文章目录 主方法调用LetterDrawingWordDoingImage 上图 你也想玩的话,可以直接上码云去看 码云链接 主方法调用 import analysisdata.WordDoingImage as WordDoingImage import analysisdata.LetterDrawing as LetterDrawingif __name__ __main__:# 输入的文本&a…

Python利器:os与chardet读取多编码文件

在数据处理中会遇到读取位于不同位置的文件,每个文件所在的层级不同,而且每个文件的编码类型各不相同,那么如何高效地读取文件呢? 在读取文件时首先需要获取文件的位置信息,然后根据文件的编码类型来读取文件。本文将使用os获取文件路径,使用chardet得到文件编码类型。 …

预约按摩小程序功能及使用指南;

小程序预约按摩功能及使用指南: 1. 注册登录:用户可选择通过账号密码或微信一键登录,便捷注册,轻松管理预约服务。 2. 查找店铺:展示附近的按摩店铺信息,用户可根据需求选择合适的店铺进行预约。 3. 选择服…

[autojs]界面上检测无障碍服务和悬浮窗

"ui"; ui.layout(<vertical><appbar><toolbar title"悬浮窗权限无障碍服务"/></appbar><horizontal><Switch id"无障碍服务" text"无障碍服务" checked"{{auto.service ! null}}" padding…

SMB信息泄露的利用

一、背景 今天分享SMB信息泄露&#xff0c;SMB&#xff08;Server Message Block&#xff09;网络通信协议&#xff0c;早些时候被用于Web链接和客户端与服务器之间的信息通信&#xff0c;现在大部分Web页面使用HTTP协议&#xff0c;在web领域应用较少。另一方面SMB协议还是被…

【运维篇】5.4 Redis 并发延迟检测

文章目录 0.前言Redis工作原理可能引起并发延迟的常见操作和命令并发延迟检测分析和解读监控数据&#xff1a;优化并发延迟的策略 1. 检查CPU情况2. 检查网络情况3. 检查系统情况4. 检查连接数5. 检查持久化 &#xff1a;6. 检查命令执行情况 0.前言 Redis 6.0版本之前其使用单…

Java 算法篇-链表的经典算法:判断回文链表、判断环链表与寻找环入口节点(“龟兔赛跑“算法实现)

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 链表的创建 2.0 判断回文链表说明 2.1 快慢指针方法 2.2 使用递归方式实现反转链表方法 2.3 实现判断回文链表 - 使用快慢指针与反转链表方法 3.0 判断环链表说明…

设计模式-迭代器模式-笔记

动机&#xff08;Motivaton&#xff09; 在软件构建过程中&#xff0c;集合对象内部结构常常变化各异。但对于这些集合对象&#xff0c;我们呢希望在不暴露其内部结构的同时&#xff0c;可以让外部客户代码透明地访问其中包含的元素&#xff1b;同时这种“透明遍历”也为“同一…

记一次攻防实战渗透

经典开局一个登录框 由于漏洞应该还未修复。对于数据和相关网址打个码见谅一下 常规思路&#xff08;爆破&#xff09; 常规操作进行一波 尝试弱口令然后开始爆破 对于此种有验证码的爆破&#xff0c;可以借用一个bp插件。 captcha-killer-modified-jdk14.jar 具体使用我就…

游戏报错d3dcompiler_47.dll缺失怎么修复,总结多种修复方法

在使用这些软件和游戏的过程中&#xff0c;我们常常会遇到一些问题&#xff0c;其中之一就是d3dcompiler_47.dll丢失的问题。这个问题可能会导致软件或游戏无法正常运行&#xff0c;给用户带来困扰。本文将详细介绍解决软件游戏d3dcompiler_47.dll丢失的方法&#xff0c;帮助您…

地推团队怎么接一手app拉新项目?这几个接单平台可以试试看

首推平台&#xff1a;“聚量推客” 有粉丝问我&#xff1a; 我在五线小城市做地推&#xff0c;有个10人的地推团队&#xff0c;怎么接到一手靠谱的单子&#xff1f; 其实不止一个粉丝在后台问我&#xff0c;做地推、充场的人都在找单子&#xff0c;做这个行业就没有不缺项目的…

C++学习 --文件

文件操作步骤&#xff1a; 1&#xff0c; 包含头文件#include<fstream> 2&#xff0c; 创建流对象&#xff1a;ofstream ofs 3&#xff0c; 打开文件&#xff1a;ofs.open("文件路径"&#xff0c; 打开方式) 4&#xff0c; 写数据&#xff1a;ofs <<…

2分钟快速安装 `nginx` 和配置 `keepalived`

这是详细的步骤来在 CentOS 7 上安装 nginx 和配置 keepalived。 主服务器&#xff08;IP: 192.168.9.195&#xff09; 安装 Nginx 安装 EPEL 仓库&#xff1a; sudo yum install epel-release -y安装 Nginx&#xff1a; sudo yum install nginx -y启动 Nginx 服务并设置开机…

【C++】基础语法(中)

C基础语法&#xff08;中&#xff09; 文章目录 C基础语法&#xff08;中&#xff09;01数组一维数组数组初始化注意访问练习1练习2练习3普通做法&#xff1a;优化reverse函数练习4 多维数组清空数组memsetmemcpy 数组的部分由上到下&#xff0c;按规律 蛇形矩阵技巧 02 字符串…

《QT从基础到进阶·二十九》QT,opencv源码调试

有时候我们在使用VS调试程序的bug&#xff0c;但发现程序崩溃的地方并不在我们写的程序中&#xff0c;我们通过调用堆栈发现程序崩溃的地方出现在QT或者opencv等源码中&#xff0c;那么我们怎么能把断点打到这些开源库中&#xff0c;下面提供一种办法&#xff1a; 解决方案–右…

C语言——写一个函数,每调用一次这个函数,就会将num的值增加1

#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>void Add(int* p) {(*p); // 的优先级高于* } int main() {int num0;Add(&num);printf("第一次调用:num %d\n",num);Add(&num);printf("第二次调用:num %d\n",num);Add(&num);p…