- 深度學(xué)習(xí)的數(shù)學(xué):使用Python語言
- (美)羅納德·T.紐塞爾
- 1044字
- 2024-04-22 11:54:55
1.3 SciPy
SciPy為Python添加了大量的函數(shù)庫。由于SciPy在后端使用NumPy,因此通常這兩個(gè)組件需要一起安裝。關(guān)于SciPy的完整指南,可以查閱其官方文檔。
在本書中,我們主要聚焦于scipy.stats模塊。啟動Python,執(zhí)行如下代碼:
>>> import scipy >>> scipy.__version__ '1.2.1'
以上代碼將加載SciPy并方便你確認(rèn)其版本是否符合最低要求,通常更新的版本在本書中也適用。
下面做幾個(gè)簡單的小實(shí)驗(yàn)。
>>> from scipy.stats import ttest_ind >>> a = np.random.normal(0,1,1000) >>> b = np.random.normal(0,0.5,1000) >>> c = np.random.normal(0.1,1,1000) >>> ttest_ind(a,b) Ttest_indResult(statistic=-0.027161815649563964, pvalue=0.9783333836992686) >>> ttest_ind(a,c) Ttest_indResult(statistic=-2.295584443456226, pvalue=0.021802794508002675)
我們首先加載NumPy,然后從SciPy的stats模塊中導(dǎo)入ttest_ind函數(shù)。該函數(shù)能夠接收兩個(gè)集合作為參數(shù),比如來自兩個(gè)類別的數(shù)值集合,然后回答如下問題:這兩個(gè)集合的均值是否相同?或者更準(zhǔn)確地說,回答我們有多大把握相信這兩組數(shù)據(jù)來自同樣的生成過程。解決這個(gè)問題的一種經(jīng)典算法就是t檢驗(yàn)(t-test)。評估方式則是看結(jié)果中的p值,即pvalue一項(xiàng)。你可以把p值理解為,如果兩組數(shù)據(jù)來自同樣的生成過程,那么這兩組數(shù)據(jù)的均值差有多大概率與我們觀測的結(jié)果一致。如果概率接近1,則可以基本相信這兩組數(shù)據(jù)的生成過程相同。
a、b和c是一維數(shù)組,其中的元素(有1000個(gè)值)都取自高斯曲線(也稱為正態(tài)曲線)。我們會在后面詳細(xì)說明數(shù)據(jù)的生成過程,這里你只需要理解每個(gè)數(shù)值都取自一條鐘形曲線,這種曲線中間的部分相比邊緣更有可能被取樣。normal函數(shù)的前兩個(gè)參數(shù)分別定義均值和標(biāo)準(zhǔn)差,后者用于衡量曲線的寬度。也就是說,標(biāo)準(zhǔn)差越大,曲線的形狀越扁平,曲線越寬。
在這個(gè)例子中,我們預(yù)期a和b是十分相似的兩組數(shù)據(jù),因?yàn)樗鼈兊木刀际?.0,只不過它們?nèi)拥溺娦吻€在形狀上存在稍許差異。相比而言,c的均值為0.1。我們希望t檢驗(yàn)算法的結(jié)果能夠體現(xiàn)這兩者之間的差異,也就是告訴我們a和c不大可能來自同樣的生成過程。
函數(shù)ttest_ind執(zhí)行t檢驗(yàn)并輸出包含pvalue一項(xiàng)的信息。正如我們所料,輸入a和b,得到的p值約為0.98。這表示如果兩組數(shù)據(jù)來自同一生成過程,那么這兩組數(shù)據(jù)的均值差異有98%的概率與我們給出的數(shù)據(jù)一致。相比而言,當(dāng)輸入a和c時(shí),得到的p值約為0.027。這表示如果兩組數(shù)據(jù)的生成過程相同,那么它們的均值差異只有3%的概率符合我們給出的數(shù)據(jù)。因而我們可以推斷a和c來自不同的生成過程。我們稱這兩組數(shù)據(jù)具有統(tǒng)計(jì)顯著性差異。
傳統(tǒng)上,我們認(rèn)為p值小于0.05就具有統(tǒng)計(jì)顯著性了。然而使用這個(gè)閾值有些武斷,最近在復(fù)現(xiàn)一些實(shí)驗(yàn),尤其是軟科學(xué)中的實(shí)驗(yàn)時(shí),大家發(fā)現(xiàn)這個(gè)閾值應(yīng)該設(shè)置得更為嚴(yán)格。以p值等于0.05為閾值,這意味著每20次實(shí)驗(yàn)中就有1次結(jié)論錯誤(1/20 = 0.05),這樣的閾值過于寬泛。應(yīng)該說,p值接近0.05只能證明某個(gè)結(jié)論有可能是事實(shí),值得我們投入更多精力(和更大規(guī)模的數(shù)據(jù))去做進(jìn)一步研究。
- Java逍遙游記
- Python程序設(shè)計(jì)教程(第2版)
- ClickHouse性能之巔:從架構(gòu)設(shè)計(jì)解讀性能之謎
- Flutter開發(fā)實(shí)戰(zhàn)詳解
- Learning Elixir
- Visual Basic學(xué)習(xí)手冊
- MySQL數(shù)據(jù)庫基礎(chǔ)實(shí)例教程(微課版)
- Mastering Apache Spark 2.x(Second Edition)
- VMware虛擬化技術(shù)
- PHP+MySQL+Dreamweaver動態(tài)網(wǎng)站開發(fā)從入門到精通(第3版)
- Regression Analysis with Python
- Python Data Science Cookbook
- Learning Unreal Engine Game Development
- 小小的Python編程故事
- Swift語言實(shí)戰(zhàn)晉級(第2版)