2019-08-27 11:30:59 5235瀏覽
使用numpy可以做很多事情,本篇文章扣丁學(xué)堂Python培訓(xùn)小編就給讀者們簡(jiǎn)單介紹一下如何使用numpy進(jìn)行方差/標(biāo)準(zhǔn)方差/樣本標(biāo)準(zhǔn)方差/協(xié)方差的計(jì)算。感興趣的小伙伴就隨小編來(lái)了解一下吧。
variance: 方差
方差(Variance)是概率論中最基礎(chǔ)的概念之一,它是由統(tǒng)計(jì)學(xué)天才羅納德·費(fèi)雪1918年最早所提出。用于衡量數(shù)據(jù)離散程度,因?yàn)樗荏w現(xiàn)變量與其數(shù)學(xué)期望(均值)之間的偏離程度。具有相同均值的數(shù)據(jù),而標(biāo)準(zhǔn)差可能不同,而通過(guò)標(biāo)準(zhǔn)差的大小則能更好地反映出數(shù)據(jù)的偏離度。
計(jì)算:一組數(shù)據(jù)1,2,3,4,其方差應(yīng)該是多少?
計(jì)算如下:
均值=(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庫(kù)中使用var函數(shù)即可求解,代碼&執(zhí)行如下:
liumiaocn:tmp liumiao$ cat np-5.py #!/usr/local/bin/python import numpy 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: 標(biāo)準(zhǔn)偏差
標(biāo)準(zhǔn)偏差=方差的開(kāi)放,所以:
計(jì)算: 一組數(shù)據(jù)1,2,3,4,其標(biāo)準(zhǔn)偏差應(yīng)該是多少?
計(jì)算就很簡(jiǎn)單了,對(duì)其求出的方差1.25進(jìn)行開(kāi)方運(yùn)算即可得到大約1.118
可以使用numpy庫(kù)中的std函數(shù)就可以非常簡(jiǎn)單的求解,代碼&執(zhí)行如下:
liumiaocn:tmp liumiao$ cat np-6.py #!/usr/local/bin/python import numpy 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: 樣本標(biāo)準(zhǔn)偏差
標(biāo)準(zhǔn)偏差是對(duì)總體樣本進(jìn)行求解,如果有取樣,則需要使用樣本標(biāo)準(zhǔn)偏差,它也是一個(gè)求開(kāi)方的運(yùn)算,但是對(duì)象不是方差,方差使用是各個(gè)數(shù)據(jù)與數(shù)學(xué)均值的差的求和的均值,簡(jiǎn)單來(lái)說(shuō)除的對(duì)象是N,樣本偏差則是N-1。
計(jì)算: 一組數(shù)據(jù)1,2,3,4,其樣本標(biāo)準(zhǔn)偏差應(yīng)該是多少?
計(jì)算如下:
均值=(1+2+3+4)/4=2.5
樣本標(biāo)準(zhǔn)偏差的方差=((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
所以對(duì)5/3開(kāi)方運(yùn)算所得到的就是樣本標(biāo)準(zhǔn)偏差為:1.29
同樣適用numpy的std函數(shù)就可以做到這點(diǎn),只需要將其一個(gè)Optional的參數(shù)設(shè)定為1即可,代碼&執(zhí)行如下:
liumiaocn:tmp liumiao$ cat np-7.py #!/usr/local/bin/python import numpy 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實(shí)際指的是樣本標(biāo)準(zhǔn)偏差,這點(diǎn)需要注意,如果你的代碼從matlab上copy過(guò)來(lái),請(qǐng)注意其實(shí)際的意義是標(biāo)準(zhǔn)偏差還是樣本標(biāo)準(zhǔn)偏差。
Covariance:協(xié)方差
協(xié)方差和方差較為接近,區(qū)別在于除數(shù)為N-1。
計(jì)算: 一組數(shù)據(jù)1,2,3,4,其協(xié)方差應(yīng)該是多少?
計(jì)算如下:
均值=(1+2+3+4)/4=2.5
方差=((1-2.5)^2 + (2-2.5)^2 + (3-2.5)^2 +(4-2.5)^2)/(4-1) = (2.25+0.25+0.25+2.25)/3 = 1.66667
使用numpy的cov函數(shù)即可簡(jiǎn)單求出,代碼和執(zhí)行結(jié)果如下:
liumiaocn:tmp liumiao$ cat np-8.py #!/usr/local/bin/python import numpy as np arr = np.array([1,2,3,4]) print("Covariance: np.cov()", np.cov(arr)) liumiaocn:tmp liumiao$ python np-8.py ('Covariance: np.cov()', array(1.66666667)) liumiaocn:tmp liumiao$
最后想要了解更多關(guān)于Python和人工智能方面內(nèi)容的小伙伴,請(qǐng)關(guān)注扣丁學(xué)堂Python培訓(xùn)官網(wǎng)、微信等平臺(tái),扣丁學(xué)堂IT職業(yè)在線學(xué)習(xí)教育平臺(tái)為您提供權(quán)威的Python開(kāi)發(fā)環(huán)境搭建視頻,Python培訓(xùn)后的前景無(wú)限,行業(yè)薪資和未來(lái)的發(fā)展會(huì)越來(lái)越好的,扣丁學(xué)堂老師精心推出的Python視頻教程定能讓你快速掌握Python從入門(mén)到精通開(kāi)發(fā)實(shí)戰(zhàn)技能??鄱W(xué)堂Python技術(shù)交流群:279521237。
【關(guān)注微信公眾號(hào)獲取更多學(xué)習(xí)資料】 【掃碼進(jìn)入Python全棧開(kāi)發(fā)免費(fèi)公開(kāi)課】
查看更多關(guān)于"Python開(kāi)發(fā)資訊"的相關(guān)文章>