數學上學過方差:$$ D(X)=\sum_{i\in [0,n)} ({x-\bar{x}})^2 $$
np.var()其實是均方差,均方差的意義就是將方差進行了平均化,從而使得此值不會隨着數據的增多而發生變化。
np.std()是標準差,np.std()的平方等於np.var(),標準差在高斯分佈中用$\sigma$表示。
不管是方差仍是標準差,它們衡量的都是二階中心矩。爲何是二階而不是一階?這是一個問題。html
函數原型:numpy.var(a, axis=None, dtype=None, out=None, ddof=0, keepdims=<class numpy._globals._NoValue>)
計算張量a在axis軸上的方差python
返回值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)))
輸出爲dom
[[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)
首先理清兩個概念:code
參數介紹:htm
返回值:out一個方陣,它的維數等於feature的個數。blog
數學上的協方差的定義:
$$ cov(X,Y)= (X-\bar{X})\cdot (Y-\bar{Y}) $$
此式中,X和Y皆爲向量。方差是特殊的協方差D(X)=cov(X,X)。協方差表示的是兩個向量的關聯程度,其實就至關於:把兩個向量中的變量進行中心化(減去均值),而後計算剩餘向量的內積。
np.cov和數學上的協方差並不同,在無偏估計狀況下:$np.cov=\frac{cov}{n-1}$;在有偏估計狀況下,$np.cov=\frac{COV}{n}$。其中n表示X向量和Y向量的維度。
例子:方差是特殊地協方差文檔
a = [1, 2, 3, 4, 6] print(np.cov(a), np.var(a) * len(a) / (len(a) - 1))
例子:兩個變量的協方差get
import numpy as np a, b = np.random.rand(2, 4) print(np.cov(a, b)) print(np.cov([a, b])) print(np.dot(a - np.mean(a), b - np.mean(b)) / (len(a) - 1))
例子:理解m和y的關係
import numpy as np a = [[1, 2], [4, 7]] b = [[7, 16], [17, 8]] c = np.cov(a, b) print(c) print(np.vstack((a,b))) print(np.cov(np.vstack((a, b))))
數學上相關係數的定義:$$ \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'>)
理解了np.cov()函數以後,很容易理解np.correlate(),兩者參數幾乎如出一轍。
np.cov()描述的是兩個向量協同變化的程度,它的取值可能很是大,也可能很是小,這就致使無法直觀地衡量兩者協同變化的程度。相關係數其實是正則化的協方差,n個變量的相關係數造成一個n維方陣。
參數介紹:
返回值:R一個n維方陣,n的個數和變量的個數相同。