numpy中的方差、协方差、相关系数

一、np.var

数学上学过方差:
$$D(X)=\sum_{i\in [0,n)} ({x-\bar{x}})^2 $$
np.var实际上是均方差。
函数原型:numpy.var(a, axis=None, dtype=None, out=None, ddof=0, keepdims=<class numpy._globals._NoValue>)
计算张量a在axis轴上的方差

  • a:一个ndarray,不一定是一维
  • axis:可取值为None,int,int元组。当取值为None时,会把张量a展平成一维数组;当指定一个或多个int时,沿着axis指定的轴计算方差,其它轴的形状会保留。
  • dtype:在计算方差的时候使用的数据类型,如果a是int类型的张量,计算方差时也会使用float32类型
  • out:放置计算结果的数组,主要用于节省空间,out的维度必须保证正确
  • ddof:int,ddof是“Delta Degrees of Freedom”,表示自由度的个数,在计算方差时,分子是各个值和均值的差的平方之和,分母为(N-ddof)
  • keepdims:是否保留a的形状

返回值variance是一个ndarray

import numpy as np

a = np.random.randint(0, 10, (2, 3))
print(a)
print(np.var(a))
print(np.var(a, axis=0))
print(np.var(a, axis=1))
print(np.var(a, keepdims=True))
print(np.var(a, axis=0, keepdims=True))
print(np.var(a, axis=(0, 1)))

输出为

[[2 1 5]
 [7 3 0]]
5.666666666666667
[6.25 1.   6.25]
[2.88888889 8.22222222]
[[5.66666667]]
[[6.25 1.   6.25]]
5.666666666666667

关于ddof

import numpy as np

a = np.random.randint(0, 10, 4)
print(np.var(a), '=',np.sum((a - np.mean(a)) ** 2) / len(a))
ddof = 1
print(np.var(a, ddof=ddof), '=',np.sum((a - np.mean(a)) ** 2) / (len(a) - ddof))

二、np.cov

numpy.cov(m, y=None, rowvar=True, bias=False, ddof=None, fweights=None, aweights=None)

数学上的协方差的定义:
$$ cov(X,Y)= (X-\bar{X})\cdot (Y-\bar{Y}) $$
此式中,X和Y皆为向量。
方差是特殊的协方差D(X)=cov(X,X)
但是,D(X)=cov(X,X)这个式子是一种有偏估计,真正的无偏估计分母是(len(a)-1)。

a = [1, 2, 3, 4, 6]
print(np.cov(a), np.var(a) * len(a) / (len(a) - 1))

三、np.correlate

相关系数的定义
$$\ro(X,Y)=\frac{cov(X,Y)}{\sqrt{cov(X,X)\times cov(Y,Y)}}$$
函数原型:numpy.corrcoef(x, y=None, rowvar=True, bias=<class ‘numpy._globals._NoValue‘>, ddof=<class ‘numpy._globals._NoValue‘>)

参考资料

PCA实现

原文地址:https://www.cnblogs.com/weiyinfu/p/10693445.html

时间: 2024-10-07 22:03:33

numpy中的方差、协方差、相关系数的相关文章

numpy中的ndarray方法和属性

原文地址 NumPy数组的维数称为秩(rank),一维数组的秩为1,二维数组的秩为2,以此类推.在NumPy中,每一个线性的数组称为是一个轴(axes),秩其实是描述轴的数量.比如说,二维数组相当于是一个一维数组,而这个一维数组中每个元素又是一个一维数组.所以这个一维数组就是NumPy中的轴(axes),而轴的数量--秩,就是数组的维数. Numpy库中的矩阵模块为ndarray对象,有很多属性:T,data, dtype,flags,flat,imag,real,size, itemsize,

方差 协方差

[方差 协方差]方差 variance协方差 covariancehttps://en.wikipedia.org/wiki/Variance方差 一个随机变量的方差描述的是它的离散程度,一个实随机变量的方差,也成为它的二阶矩或二阶中心动差.Informally, it measures how far a set of (random) numbers are spread out from their average value. Variance has a central role in

numpy中的matrix和array

Preface 在相关聚类算法的实现过程中,用python语言实现,会经常出现array和matrix的混淆,这里做个总结. array数组 numpy中最基本(默认)的类型是array,他的相关操作都是按元素操作的即用作数值计算当中(按元素操作有+,-,,/,*等).相乘举例: from numpy import * >>> a=array([1,2]) >>> a array([1, 2]) >>> b=array([2,3]) >>&

Numpy中使用矩阵

http://blog.csdn.net/pipisorry/article/details/39088003 Numpy是Python中的一个矩阵计算包,功能类似于MATLAB的矩阵计算. 具体参见http://www.numpy.org/.安装Pythonxy时已经包含了numpy包及其依赖包. (1) 定义矩阵 >>> from numpy import * >>> a = array([[1,2.2,3],[4,5,6]]) >>> a.ndi

[笔记]numpy中的tile与kron的用法

numpy中提供了不少数学中矩阵的运算.构造函数. 闭上眼睛想一想,发现其中常用的也就是那么几个:cos, sin, mean, dot, max,min, outer,argsort,ones,zeros,arrange,reshape,fft---等. 想了半天,可以也不超过30个左右常用函数. 但是numpy的确博大精深:查看文档发现有大概586个方法或属性! 今天,我就记录一下numpy中,矩阵运算tile与kron的用处之一吧. 确切的讲,是谈论的在向量化运算方面的用处. 记得高等代数

numpy中matrix的特殊属性

一.matrix特殊属性解释 numpy中matrix有下列的特殊属性,使得矩阵计算更加容易 摘自 NumPy Reference Release 1.8.1 1.1 The N-dimensional array (ndarray) An ndarray is a (usually fixed-size) multidimensional container of items of the same type and size. 摘自 NumPy Reference Release 1.9.1

Numpy中的flatten是按照什么方式进行工作。

a = [[[1,2],[3,4]],[[5,6],[7,8]]] a = np.ndarray(a) array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]]) type(a) numpy.ndarray a.flatten() array([1, 2, 3, 4, 5, 6, 7, 8]) 从上面可以 看出,numpy中的flatten是按照行进行,在按照列,最后按照通道. 就这样子

Numpy中Meshgrid函数介绍及2种应用场景

近期在好几个地方都看到meshgrid的使用,虽然之前也注意到meshgrid的用法.但总觉得印象不深刻,不是太了解meshgrid的应用场景.所以,本文将进一步介绍Numpy中meshgrid的用法. Meshgrid函数的基本用法 在Numpy的官方文章里,meshgrid函数的英文描述也显得文绉绉的,理解起来有些难度.可以这么理解,meshgrid函数用两个坐标轴上的点在平面上画网格.用法: [X,Y]=meshgrid(x,y) [X,Y]=meshgrid(x)与[X,Y]=meshg

Numpy 中tile(A, reps)方法

官方文档: 个人理解: 返回值 ndarray,该函数是通过reps重复A后得到一个多位数组, 有点绕... 参数 A几乎可以是全体类型, array, list , tuple, dict, matrix, int, long ,str, bool 等等 reps,类型也很多, array, tuple, list, dict ,int ,long, bool 但是不管怎样都必须是 "一维数组(不一定是数组, 这里说成类一维数组)" , 如[1,2,3,4] , (1,2,3)或 3