numpy中標準差std的神坑

2021-09-26 10:54:36 字數 792 閱讀 3089

我們用matlab作為對比。計算標準差,得到:

>> std([1,2,3])

ans =

1

然而在numpy中:

>>> np.std([1,2,3])

0.81649658092772603

什麼鬼!這麼簡單的都能出錯?原因在於,np.std有這麼乙個引數:

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.

因此,想要正確呼叫,必須使ddof=1:

>>> np.std([1,2,3], ddof=1)

1.0

而且,這一特性還影響到了許多基於numpy的包。比如scikit-learn裡的standardscaler。想要正確呼叫,只能自己手動設定引數:

ss = standardscaler()

ss.mean_ = np.mean(x, axis=0)

ss.scale_ = np.std(x, axis=0, ddof=1)

x_norm = ss.transform(x)

當x資料量較大時無所謂,當x資料量較小時則要尤為注意。

標準差和標準誤的區別

首先標準誤和標準差是有先後的 個人理解 先標準差後標準誤 標準差定義 總體各單位標準值與其平均數離差平方的算術平均數的平方根 即抽取為n個樣本或測量n個結果與其平均值的離差平方算數平方根 n個樣本相對於其平均值分散程度的一種度量,越小均值越具代表性 標準差 方差的開平方 標準差公式 若為樣本標準差則...

標準差的理解和例項

是各個資料分別與其平均數之差的平方的和的平均數,用字母d表示。在概率論和數理統計中,方差 variance 用來度量隨機變數和其數學期望 即均值 之間的偏離程度。在許多實際問題中,研究隨機變數和均值之間的偏離程度有著重要意義。其中,x表示樣本的平均數,n表示樣本的數量,xi表示個體,而s 2就表示方...

標準差和標準誤差的區別

在日常的統計分析中,標準差和標準誤是一對十分重要的統計量,兩者有區別也有聯絡。但是很多人卻沒有弄清其中的差異,經常性地進行一些錯誤的使用。對於標準差與標準誤的區別,很多書上這樣表達 標準差表示資料的離散程度,標準誤表示抽樣誤差的大小。這樣的解釋可能對於許多人來說等於沒有解釋。其實這兩者的區別可以採用...