Task08学习思维导图

注:为了节约行数,默认import numpy as np已经写在每段代码前,不再重复写入,如果有新的包引入,会在这里说明:

from scipy import stats

前言

在第十一章的学习:数学函数 中,我们已经大体介绍了一些统计函数的基本使用方法:

在本次学习中让我们来系统性地学习一下,明白它们到底是用来做什么的。

概率论是统计学的基础,而随机事件的概率是概率论研究的基本内容。

统计学不研究统计,它研究的是不确定性。我们的世界是一个充满不确定性的环境,整个世界并非严格按照某个制定好的路线运行的。多数事物之间也并非有因必有果,万物之间充满了不可控的随机事件,我们不会因为今天努力了明天就一定会成功。

不确定性事件唯一的规律就是概率,独立随机事件我们没办法预测或控制它在某个时刻一定会发生,但却可以用概率来描述它发生的可能性。以概率论作为理论基础,为我们提供了认识不确定世界的方法。

在上一章我们学了随机抽样在numpy中的实现,这一章我们学习统计相关内容在numpy中的实现,如果numpy没有直接的实现方式,我可能会用stats等其他Python包来实现。

数据分析中,最常见的场景,就是你手上拿到一组,一批或者一坨数据。不懂统计学的人,可能会不知所措,或者说,你不做些加工和处理,你不知道这些数据有啥用。这个时候,就需要通过这些描述性、概括性的度量指标,来帮我们从宏观上把握数据中的初步信息。

要全面把握数据分布就要反映数据分布特征的代表值。通常包含分布的集中趋势、分布的离散程度分布形状

一、描述性(概括性)统计

1、集中趋势

1)众数

众数(Mode)是指在统计分布上具有明显集中趋势点的数值,代表数据的一般水平。 也是一组数据中出现次数最多的数值,有时众数在一组数中有好几个。用M表示。

A、numpy实现

>>> nums = np.array([1,2,3,3,4,4])
>>> print(nums)
[1 2 3 3 4 4]
>>> counts = np.bincount(nums)
#求得最多次数
>>> indexs = np.where(counts == np.amax(counts))
>>> print(nums[indexs])
[3 4]

由于numpy中没有直接求众数的方法,所以这里利用numpy特性求得,注意众数可能不止一个。

B、scipy实现

>>> mode = stats.mode(nums)
>>> print("nums中最常见的成员为:{},出现了{}次。".format(mode[0][0], mode[1][0]))

2)中位数

中位数(Median)又称中值,是按顺序排列的一组数据中居于中间位置的数,代表一个样本、种群或概率分布中的一个数值,其可将数值集合划分为相等的上下两部分。对于有限的数集:

  • 奇数个:把所有观察值高低排序后找出正中间的一个作为中位数
  • 偶数个:通常取最中间的两个数值的平均数作为中位数

在numpy中实现的方法是:

参数解释:

  • a:目标数据
  • axis:沿着哪里切割,默认为None,即平铺所有元素

对于axis的含义,我想我们可以通过图解来说明:


这里有人会产生疑问,你怎么知道是这样运作的,很简单,在上面的例子中原数组shape为(2,3),当axis=0时,结果为(3,),这样很容易理解为数组的行被“压缩”,为什么要在这里说明呢,因为人是三维生物,我们可以理解1,2,3维数据结构,但是如果之后要处理3维以上的数据的话,如果不知道axis真正的含义是很容易混淆的。

  • out:用于放置求取中位数后的数组。 它必须具有与预期输出相同的形状和缓冲区长度
  • overwrite_input:如果为True那么将直接在数组内存中计算,这意味着计算之后原数组没办法保存,但是好处在于节省内存资源。默认为False
  • keepdims:是否保留当前轴。默认为False


即可以理解成,给不给列“压扁”,也可以理解成不降维度,只变维数。

3)分位数


参数解释(只介绍新的,重复的不再赘述):

  • q:0-100的浮点数,指定要找的分位数位置
  • interpolation:代表如果要求的位置夹在两个数之间的话如何取舍,默认为’linear’

np.percentile(a, 70)为例,探究其计算方式:

A、'linear’计算方式

  1. (数组长度-1)* 百分比 = (6-1) * 70% = 3.5 = a+b
  2. a = 3,b = 0.5
  3. result = arr[a] + b x (arr[a+1] - arr[a])= 4+(7-4) x 0.5 = 5.5

可以再简单理解一下:

result = V(A)+(V(B)-V(A))*PA/AB

这里面V(x)代表x的值,PA和AB代表对应两点的百分比差

B、'lower’计算方式

选值最小的那个点

C、'higher’计算方式

选值最大的那个点

D、'nearest’计算方式

选距离两个点百分比差最小的那个点

E、'midpoint’计算方式

两个点值的平均数

4)四分位数

四分位数(Quartile)也称四分位点,是指在统计学中把所有数值由小到大排列并分成四等份,处于三个分割点位置的数值。多应用于统计学中的箱线图绘制。它是一组数据排序后处于25%和75%位置上的值。

5)算术平均数

又称均值,是统计学中最基本、最常用的一种平均指标,当各项权相等时,计算平均数就要采用算术平均数。

参数解释:

  • dtype:用于计算的数据类型,同时用于输出

例子如下:

6)加权平均数


参数解释:

  • weights:指定权重
  • returned:若为True,返回权重之和。默认为False

例子如下:

算术平均数就是特殊的加权平均数:

7)几何平均数

根据统计资料的不同,几何平均数也有简单几何平均数和加权几何平均数之分。我们以简单几何平均数为例,简单几何平均数是n个变量值连乘积的n次方根。

我们来解下面这道题:

例如,生产某产品需连续经过4道工序,根据经验,各道工序的合格率分别为98%、95%、92%、90%,求该产品4道工序的平均合格率
平均合格率
=93.7%

A、numpy实现

numpy中没有直接实现的方法,但是我们可以通过乘和幂函数来计算:

B、scipy实现

我们都可以顺利地求出答案。

2、离散程度

1)异众比率

异众比率(variation ratio)是统计学名词,是统计学当中研究现象离中趋势的指标之一。异众比率指的是总体中非众数次数与总体全部次数之比。换句话说,异众比率指非众数组的频数占总频数的比例。


其中,表示异众比率,表示众数次数,N表示总体单位总数(即总体次数)。

由于numpy和scipy中都没有直接实现求异众比率的方法,所以这里以scipy方法为例,因为这里借用了求众数方法,所以只想用numpy计算的朋友可以进行方法替换:

2)四分位差

四分位差(quartile deviation),它是上四分位数(Q3,即位于75%)与下四分位数(Q1,即位于25%)的差。
计算公式为:Q = Q3-Q1
四分位差反映了中间50%数据的离散程度,其数值越小,说明中间的数据越集中;其数值越大,说明中间的数据越分散。四分位差不受极值的影响。此外,由于中位数处于数据的中间位置,因此,四分位差的大小在一定程度上也说明了中位数对一组数据的代表程度。四分位差主要用于测度顺序数据的离散程度。对于数值型数据也可以计算四分位差,但不适合分类数据。

3)极差

极差又称范围误差或全距(Range),以R表示,是用来表示统计资料中的变异量数(measures of variation),其最大值与最小值之间的差距,即最大值减最小值后所得之数据。

实现方法如下

例子如下:

4)平均差

平均差(Mean Deviation)是表示各个变量值之间差异程度的数值之一。指各个变量值同平均数的离差绝对值的算术平均数,计算公式:

平均差异大,表明各标志值与算术平均数的差异程度越大,该算术平均数的代表性就越小;平均差越小,表明各标志值与算术平均数的差异程度越小,该算术平均数的代表性就越大。因离差和为零,离差的平均数不能将离差和除以离差的个数求得,而必须将离差取绝对数来消除正负号。平均差是反应各标志值与算术平均数之间的平均差异。

由于numpy和scipy中都没有直接实现求异众比率的方法,所以这里以numpy方法为例:

5)方差

在统计描述中,方差用来计算每一个变量(观察值)与总体均数之间的差异。为避免出现离均差总和为零,离均差平方和受样本含量的影响,统计学采用平均离均差平方和来描述变量的变异程度。总体方差计算公式:

参数解释:

  • ddof:如果我们从较大的分布中选择N个元素的随机样本并计算方差,则除以N可能导致对实际方差的低估。为了解决这个问题,我们可以将我们除以(the degrees of freedom)的数字减小到小于N(通常为N-1)的数字。 ddof参数允许我们按照我们指定的值更改除数。

例子:

可以看到前者是2/3,后者是2/2,除数减去了ddof的值

6)标准差

标准差(Standard Deviation) ,是离均差平方的算术平均数(即:方差)的算术平方根,用σ表示。标准差也被称为标准偏差,或者实验标准差,在概率统计中最常使用作为统计分布程度上的测量依据。
标准差是方差的算术平方根。标准差能反映一个数据集的离散程度。平均数相同的两组数据,标准差未必相同。


例子如下:

7)离散系数(变异系数)

离散系数又称变异系数,是统计学当中的常用统计指标。离散系数是测度数据离散程度的相对统计量,主要是用于比较不同样本数据的离散程度。离散系数大,说明数据的离散程度也大;离散系数小,说明数据的离散程度也小。用标准差与平均数的比值(相对值)来比较:


由于numpy和scipy中都没有直接实现求异众比率的方法,所以这里以numpy方法为例:

3、分布形态

1)偏态系数

偏态系数又称偏差系数,说明随机系列分配不对称程度的统计参数,用Cs表示。和Cv只能反映频率密度分配曲线的平均情况和离散程度,而不能反映其对称(即偏态)情况,所以必须再引入一个参数,即偏差系数Cso。偏态系数绝对值越大,偏斜越严重。

  • 偏态系数小于0,左偏,负偏
  • 偏态系数大于0,右偏,正偏

偏态系数以平均值与中位数之差对标准差之比率来衡量偏斜的程度。

我们采用scipy方式实现验证:

是一个正偏态,所以系数大于0,用scipy.skew()方法求得结果也是大于0的,验证成功。

2)峰态系数

在统计学中,峰度(Kurtosis)衡量实数随机变量概率分布的峰态。峰度高就意味着方差增大是由低频度的大于或小于平均值的极端差值引起的。

峰度以bk表示,Xi是样本测定值,Xbar是样本n次测定值的平均值,s为样本标准差。正态分布的峰度为3。以一般而言,正态分布为参照,峰度可以描述分布形态的陡缓程度,若bk<3,则称分布具有不足的峰度,若bk>3,则称分布具有过度的峰度。若知道分布有可能在峰度上偏离正态分布时,可用峰度来检验分布的正态性。

在更通常的情况下,峰度被定义为四阶累积量除以二阶累积量的平方,它等于四阶中心矩除以概率分布方差的平方再减去3:

我们采用scipy方式实现:

其值小于0,说明datas数据分布密度形状为平坦。

二、其他相关

1、最大值


参数解释:

  • initial:人为设置的输出的最小值,可配合where使用
  • where:当为False时,不进行求最大值,仅输出inital

例子:


我们可以看到,由于initial没有默认值,所以使用where之前必须使用initial进行赋值。

2、最小值


使用方法同numpy.amax(),只不过要记得initial此时代表最大值:

3、计算协方差矩阵

协方差表示的是两个变量的总体的误差,这与只表示一个变量误差的方差不同。 如果两个变量的变化趋势一致,也就是说如果其中一个大于自身的期望值,另外一个也大于自身的期望值,那么两个变量之间的协方差就是正值。 如果两个变量的变化趋势相反,即其中一个大于自身的期望值,另外一个却小于自身的期望值,那么两个变量之间的协方差就是负值:

协方差矩阵的每个元素是各个向量元素之间的协方差:


其中:

numpy中实现的方法为cov()方法

参数解释:

  • m:一维或则二维的数组,默认情况下每一行代表一个变量(属性),每一列代表一个观测
  • y:与m具有一样的形式的一组数据
  • rowvar:默认为True,此时每一行代表一个变量(属性),每一列代表一个观测;为False时,则反之
  • bias:默认为False,此时标准化时除以n-1;反之为n。其中n为观测数
  • ddof:类型是int,当其值非None时,bias参数作用将失效。当ddof=1时,将会返回无偏估计(除以n-1),即使指定了fweights和aweights参数;当ddof=0时,则除以n
  • frequency weights:一维数组,代表每个观测要重复的次数(相当于给观测赋予权重)
  • analytic weights:一维数组,代表观测矢量权重。对于被认为“重要”的观察,这些相对权重通常很大,而对于被认为不太重要的观察,这些相对权重较小。如果ddof = 0,则可以使用权重数组将概率分配给观测向量

例子:

cov(a,a)=(1-2,2-2,3-2)(1-2,2-2,3-2).T=1
cov(a,b)=cov(b,a)=(1-2,2-2,3-2)
(4-5,5-5,6-5).T=1
cov(b,b)=(4-5,5-5,6-5)*(4-5,5-5,6-5).T=1


需要注意的是,此时如果用下面公式计算得到的其实是总体方差:

4、计算相关系数

相关关系是一种非确定性的关系,相关系数是研究变量之间线性相关程度的量。由于研究对象的不同,相关系数有如下几种定义方式。
简单相关系数:又叫相关系数或线性相关系数,一般用字母r表示,用来度量两个变量间的线性关系:

其中Cov(X,Y)为X与Y的协方差,Var[X]为X的方差,Var[Y]为Y的方差

参数解释:

  • x:一维或则二维的数组,默认情况下每一行代表一个变量(属性),每一列代表一个观测
  • y:与m具有一样的形式的一组数据
  • rowvar:默认为True,此时每一行代表一个变量(属性),每一列代表一个观测;为False时,则反之
  • bias:废弃使用
  • ddof:废弃使用

例子:


在这里我们可以得知,默认情况下,numpy中求相关系数的时候,分母除的是各自的样本标准差,而不是总体标准差。

5、直方图


参数解释:

  • x : 待返回的数组

  • bins :一维单调数组,必须是升序或者降序

  • right:设置区间范围左闭右开或左开右闭,默认为前者

返回值:x在bins中的位置,从1开始,找到符合范围的位置

例子:


我们可以看到,确实是从1开始返回位置,而且超过bins的范围后,返回的数是离这个值最近的位置。

四、练习

1、y=Xβ

对于简单线性回归,向量计法等同于:

solve() or inv().dot()

其中,第一个结果是斜率,第二个结果是截距。

2、计算给定数组中每行的最大值。

a = np.random.randint(1, 10, [5, 3])
【知识点:统计相关】

如何在二维numpy数组的每一行中找到最大值?

3、计算数组的元素最大值与最小值之差(极值)

【知识点:统计相关】

数组为:
A=[[3 7 5]
[8 4 3]
[2 4 9]]

4、计算s的均值,方差,标准差,协方差

【知识点:统计相关】

s=[9.7, 10, 10.3, 9.7,10,10.3,9.7,10,10.3]

参考文献

#数据的描述性统计
1、https://www.cnblogs.com/zgq25302111/p/11256142.html

#统计学知识大梳理(终极篇)
2、https://baijiahao.baidu.com/s?id=1666143636455092276&wfr=spider&for=pc

#数据的离散程度度量
3、https://blog.csdn.net/walking_visitor/article/details/83503008

#numpy数学函数-统计函数
4、https://blog.csdn.net/Xiao_Spring/article/details/109287278

#numpy中标准差std的神坑
5、https://blog.csdn.net/zbq_tt5/article/details/100054087

#统计学—之样本方差与总体方差的区别
6、https://blog.csdn.net/zxyhhjs2017/article/details/79149111

#【Numpy学习记录】np.cov详解
7、https://blog.csdn.net/jeffery0207/article/details/83032325

【Task08】Numpy学习打卡相关推荐

  1. numpy 转存为matlab_Numpy学习打卡task01

    今天带来的是Datawhale自主学习Numpy下学习打卡笔记第一部分-输入输出(为什么没有上,别问,问就是numpy.tan(90)).本文大致介绍了numpy的相关背景知识.本文素材来自网络及da ...

  2. 寒假学习打卡第一篇文章-----numpy的学习

    寒假学习打卡-----numpy的学习(技术咨询vx:keyichen_free day01 1.数组的创建 # 再进行所有的操作之前,要先导入numpy import numpy as np # 创 ...

  3. 学习打卡1-Matplotlib初相识

    学习打卡1-Matplotlib初相识 一.认识matplotlib matplotlib是受MATLAB的启发构建的.MATLAB是数据绘图领域广泛使用的语言和工具.MATLAB语言是面向过程的.利 ...

  4. Numpy学习笔记(下篇)

    目录 Numpy学习笔记(下篇) 一.Numpy数组的合并与分割操作 1.合并操作 2.分割操作 二.Numpy中的矩阵运算 1.Universal Function 2.矩阵运算 3.向量和矩阵运算 ...

  5. numpy 学习笔记

    numpy 学习笔记 导入 numpy 包 import numpy as np 声明 ndarray 的几种方法 方法一,从list中创建 l = [[1,2,3], [4,5,6], [7,8,9 ...

  6. 坚持学习打卡的人,将来会变成什么样?

    坚持打卡的人,将来会变成怎么样?让我们拭目以待.我组织了一个打卡活动,希望大家踊跃参加. 有一个励志故事: 在中国的最东边生长着一种竹子,名叫"毛竹".那里的农民到处播种,每天精心 ...

  7. NumPy学习笔记 一

    NumPy学习笔记 一 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.<数学分 ...

  8. 普中科技开发板使用说明书_百度大脑加持,米尔科技FZ3深度学习计算卡评测

    如果你要问我现在电子产业什么最热,那无疑是AI,而基于大数据训练的深度学习技术可以说是目前AI应用的最广,最成功的产品形态了,覆盖我们生活的方方面面,诸如购物.看病.新闻编辑等,在这高深技术的背后少不 ...

  9. python中ndarray对象实例化_Python数据分析之Numpy学习 2——NumPy 基础 ndarray对象

    Python数据分析之Numpy学习 2 -- NumPy 基础学习 NumPy(Numerical Python)是高性能科学计算和数据分析的基础包.NumPy的主要对象是同构数据多维容器(homo ...

  10. python数据分析基础教程 numpy_Python数据分析基础教程:NumPy学习指南(第2版)

    Python数据分析基础教程:NumPy学习指南(第2版) Ivan Idris (作者) 张驭宇 (译者) NumPy是一个优秀的科学计算库,提供了很多实用的数学函数.强大的多维数组对象和优异的计算 ...

最新文章

  1. Socket连接与HTTP连接
  2. AI理论知识整理(18)-内积与范数
  3. 程序员:你见过哪些要命的奇葩代码?
  4. symfony学习笔记——路由
  5. mysql gtid ha_MySQl新特性 GTID
  6. c#使用FluentFtp实现一行代码实现ftp上传下载等
  7. matlab怎么打出角频率,[Matlab]频率f,角频率Ω和数字频率w的物理含义
  8. 极限编程创始人Ron Jeffries建议开发者放弃敏捷
  9. SQL计算宝宝吃奶的时间间隔(二)
  10. java 字符串 面试_JAVA中String介绍及常见面试题小结
  11. 优先队列与Heap的小结
  12. 大数据量情况程序处理技巧
  13. NoSQLBooster for MongoDB基本使用步骤
  14. 一不小心成了中国电力行业最大的无人机供应商,但曹飞的理想是推动整个产业变革
  15. 集装箱编号校验码规则(JavaScript版本)
  16. 如何搭建企业报表管理系统?
  17. 使用ZED相机录制事件双目数据集
  18. 拼多多API接口大全
  19. Illustrator “图像裁切”功能如何使用?
  20. Python数据可视化库Matplotlib折线图(一)

热门文章

  1. 亚控科技笔试面试记录
  2. 微信小程序页面跳转方式
  3. Pytorch - masked_fill方法参数详解与使用
  4. 为什么阿里,腾讯,百度和京东都是在开曼岛注册的?
  5. 使用 keepalived 设置虚拟 IP 环境
  6. 最强蜗牛服务器维护要多久,最强蜗牛转服需要什么条件
  7. 最强蜗牛服务器维护祷告攻略,最强蜗牛维护补偿在哪里领取 最强蜗牛维护补偿领取攻略_游戏堡...
  8. 自然语言处理NLP基础知识
  9. 《精通git》笔记之九(储藏与清理、签署工作、搜索)
  10. ubuntu终端挂代理办法