python numpy實現 標準差,方差

2022-05-24 15:51:16 字數 3954 閱讀 1252

使用numpy可以做很多事情,在這篇文章中簡單介紹一下如何使用numpy進行方差/標準方差/樣本標準方差/協方差的計算。

variance: 方差

方差(variance)是概率論中最基礎的概念之一,它是由統計學天才羅納德·費雪2023年最早所提出。用於衡量資料離散程度,因為它能體現變數與其數學期望(均值)之間的偏離程度。具有相同均值的資料,而標準差可能不同,而通過標準差的大小則能更好地反映出資料的偏離度。

計算:一組資料1,2,3,4,其方差應該是多少?

計算如下:

均值=(1+2+3+4)/4=2.5 

方差=((1-2.5)^2 + (2-2.5)^2 + (3-2.5)^2 +(4-2.5)^2)/4 = (2.25+0.25+0.25+2.25)/4 = 1.25

python的numpy庫中使用var函式即可求解,**&執行如下:12

3456

78liumiaocn:tmp liumiao$ cat np-5.py

#!/usr/local/bin/python

importnumpy as np

arr=np.array([1,2,3,4])

print("variance of [1,2,3,4]:", np.var(arr))

liumiaocn:tmp liumiao$ python np-5.py

('variance of [1,2,3,4]:',1.25)

liumiaocn:tmp liumiao$

standard deviation: 標準偏差

標準偏差=方差的開放,所以:

計算: 一組資料1,2,3,4,其標準偏差應該是多少?

計算就很簡單了,對其求出的方差1.25進行開方運算即可得到大約1.118

可以使用numpy庫中的std函式就可以非常簡單的求解,**&執行如下:12

3456

78910

1112

liumiaocn:tmp liumiao$ cat np-6.py

#!/usr/local/bin/python

importnumpy as np

arr=np.array([1,2,3,4])

print("variance of [1,2,3,4]:", np.var(arr))

print("sqrt of variance [1,2,3,4]:",np.sqrt(np.var(arr)))

print("standard deviation: np.std()", np.std(arr))

liumiaocn:tmp liumiao$ python np-6.py

('variance of [1,2,3,4]:',1.25)

('sqrt of variance [1,2,3,4]:',1.118033988749895)

('standard deviation: np.std()',1.118033988749895)

liumiaocn:tmp liumiao$

sample standard deviation: 樣本標準偏差

標準偏差是對總體樣本進行求解,如果有取樣,則需要使用樣本標準偏差,它也是乙個求開方的運算,但是物件不是方差,方差使用是各個資料與數學均值的差的求和的均值,簡單來說除的物件是n,樣本偏差則是n-1。

計算: 一組資料1,2,3,4,其樣本標準偏差應該是多少? 

計算如下: 

均值=(1+2+3+4)/4=2.5 

樣本標準偏差的方差=((1-2.5)^2 + (2-2.5)^2 + (3-2.5)^2 +(4-2.5)^2)/3 = (2.25+0.25+0.25+2.25)/4 = 5/3 

所以對5/3開方運算所得到的就是樣本標準偏差為:1.29

同樣適用numpy的std函式就可以做到這點,只需要將其乙個optional的引數設定為1即可,**&執行如下:12

3456

78liumiaocn:tmp liumiao$ cat np-7.py

#!/usr/local/bin/python

importnumpy as np

arr=np.array([1,2,3,4])

print("sample standard deviation: np.std()", np.std(arr, ddof=1))

liumiaocn:tmp liumiao$ python np-7.py

('sample standard deviation: np.std()',1.2909944487358056)

liumiaocn:tmp liumiao$

注意:matlab中的std實際指的是樣本標準偏差,這點需要注意,如果你的**從matlab上copy過來,請注意其實際的意義是標準偏差還是樣本標準偏差

梯度下降法python numpy實現

批量梯度下降法 batch gradient descent,bgd 使用所有樣本在當前點的梯度值來對變數引數進行更新操作。隨機梯度下降法 stochastic gradient descent,sgd 在更新變數引數的時候,選取乙個樣本的梯度值來更新引數。小批量梯度下降法 mini batch g...

用Python NumPy模組實現神經網路

首先,你要保證掌握一定的python技能,讓我們檢測一下吧,如果你能回答如下問題,就可以輕鬆閱讀本文,如果不行,那先學習 複習 一下python吧!我要公布其中一些的答案 python中的類由 init 函式 初始化 與其他功能函式組成。python程式的標準格式如下 import class de...

Python Numpy陣列儲存

numpy提供了幾種資料儲存的方法。以3 4陣列a為例 這種方法只能儲存為二進位制檔案,且不能儲存當前資料的行列資訊,檔案字尾不一定非要是bin,也可以為txt,但不影響儲存格式,都是二進位制。這種儲存方法對資料讀取有要求,需要手動指定讀出來的資料的的dtype,如果指定的格式與儲存時的不一致,則讀...