python 標(biāo)準(zhǔn)差計(jì)算的實(shí)現(xiàn)(std)
numpy.std() 求標(biāo)準(zhǔn)差的時(shí)候默認(rèn)是除以 n 的,即是有偏的,np.std無(wú)偏樣本標(biāo)準(zhǔn)差方式為加入?yún)?shù) ddof = 1;
pandas.std() 默認(rèn)是除以n-1 的,即是無(wú)偏的,如果想和numpy.std() 一樣有偏,需要加上參數(shù)ddof=0 ,即pandas.std(ddof=0) ;DataFrame的describe()中就包含有std();
demo:
>>> a array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) >>> np.std(a, ddof = 1) 3.0276503540974917 >>> np.sqrt(((a - np.mean(a)) ** 2).sum() / (a.size - 1)) 3.0276503540974917 >>> np.sqrt(( a.var() * a.size) / (a.size - 1)) 3.0276503540974917
PS:numpy中標(biāo)準(zhǔn)差std的神坑
我們用Matlab作為對(duì)比。計(jì)算標(biāo)準(zhǔn)差,得到:
>> std([1,2,3]) ans = 1
然而在numpy中:
>>> np.std([1,2,3]) 0.81649658092772603
什么鬼!這么簡(jiǎn)單的都能出錯(cuò)?原因在于,np.std有這么一個(gè)參數(shù):
ddof : int, optional
Means Delta Degrees of Freedom. The divisor used in calculations is N - ddof, where N represents the number of elements. By default ddof is zero.
因此,想要正確調(diào)用,必須使ddof=1:
>>> np.std([1,2,3], ddof=1) 1.0
而且,這一特性還影響到了許多基于numpy的包。比如scikit-learn里的StandardScaler。想要正確調(diào)用,只能自己手動(dòng)設(shè)置參數(shù):
ss = StandardScaler() ss.mean_ = np.mean(X, axis=0) ss.scale_ = np.std(X, axis=0, ddof=1) X_norm = ss.transform(X)
當(dāng)X數(shù)據(jù)量較大時(shí)無(wú)所謂,當(dāng)X數(shù)據(jù)量較小時(shí)則要尤為注意。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
PyTorch中的參數(shù)類torch.nn.Parameter()詳解
這篇文章主要給大家介紹了關(guān)于PyTorch中torch.nn.Parameter()的相關(guān)資料,要內(nèi)容包括基礎(chǔ)應(yīng)用、實(shí)用技巧、原理機(jī)制等方面,文章通過(guò)實(shí)例介紹的非常詳細(xì),需要的朋友可以參考下2022-02-02
python爬蟲(chóng)框架scrapy下載中間件的編寫(xiě)方法
這篇文章主要介紹了python爬蟲(chóng)框架scrapy下載中間件,在每一個(gè)scrapy工程中都有一個(gè)名為 middlewares.py 的文件,這個(gè)就是中間件文件,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧2022-03-03
簡(jiǎn)單了解python元組tuple相關(guān)原理
這篇文章主要介紹了簡(jiǎn)單了解python元組tuple相關(guān)原理,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12
Idea安裝python顯示無(wú)SDK問(wèn)題解決方案
這篇文章主要介紹了Idea安裝python顯示無(wú)SDK問(wèn)題解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08
LyScript實(shí)現(xiàn)指令查詢功能的示例代碼
對(duì)LyScript自動(dòng)化插件進(jìn)行二次封裝,可以實(shí)現(xiàn)從內(nèi)存中讀入目標(biāo)進(jìn)程解碼后的機(jī)器碼。所以本文為大家介紹了如何實(shí)現(xiàn)LyScript指令查詢功能,需要的可以參考一下2022-09-09

