這5個Python庫太難搞!每位數據科學家都應該瞭解|諾禾

2020-08-12 14:24:05

Pthon之所以能成爲世界上最受歡迎的程式語言之一,與其整體及其相關庫的生態系統密不可分,這些強大的庫讓Python保持着生命力和高效力。作爲數據科學家免不了會使用一些Python庫用於專案和研究,除卻那些常見的庫,還有很多庫能夠增強你的數據科學研究能力。

本文將介紹五大難懂的Python庫,理解起來並不容易,但搞定它們你就能功力大增!

1.Scrapy

每位數據科學家的專案都是從處理數據開始的,而網際網路就是最大、最豐富、最易存取的數據庫。但可惜的是,除了通過pd.read_html函數來獲取數據時,一旦涉及從那些數據結構複雜的網站上抓取數據,數據科學家們大多都會毫無頭緒。

Web爬蟲常用於分析網站結構和儲存提取資訊,但相較於重新構建網頁爬蟲,Scrapy使這個過程變得更加容易。

Scrapy用戶介面非常簡潔使用感極佳,但其最大優勢還得是效率高。Scrapy可以非同步發送、排程和處理網站請求,也就是說:它在花時間處理和完成一個請求的同時,也可以發送另一個請求。Scrapy通過同時向一個網站發送多個請求的方法,使用非常快的爬行,以最高效的方式迭代網站內容。

除上述優點外,Scrapy還能讓數據科學家用不同的格式(如:JSON,CSV或XML)和不同的後端(如:FTP,S3或local)導出存檔數據。

這5個Python庫太難搞!每位數據科學家都應該瞭解
圖源:unsplash

2.Statsmodels

到底該採用何種統計建模方法?每位數據科學家都曾對此猶豫不決,但Statsmodels是其中必須得瞭解的一個選項,它能實現Sci-kit Learn等標準機器學習庫中沒有的重要演算法(如:ANOVA和ARIMA),而它最有價值之處在於其細節化處理和資訊化應用。

例如,當數據科學家要用Statsmodels算一個普通最小二乘法時,他所需要的一切資訊,不論是有用的度量標準,還是關於係數的詳細資訊,Statsmodels都能提供。庫中實現的其他所有模型也是如此,這些是在Sci-kit learn中無法得到的。

OLSRegressionResults

Dep. Variable: Lottery R-squared: 0.348
Model: OLS Adj. R-squared: 0.333
Method: LeastSquares F-statistic: 22.20
Date: Fri, 21Feb2020 Prob (F-statistic): 1.90e-08
Time: 13:59:15 Log-Likelihood: -379.82
No. Observations: 86 AIC: 765.6
DfResiduals: 83 BIC: 773.0
DfModel: 2
CovarianceType: nonrobust

coef std err t P>|t| [0.025 0.975]

Intercept 246.4341 35.233 6.995 0.000 176.358 316.510
Literacy -0.4889 0.128 -3.832 0.000 -0.743 -0.235
np.log(Pop1831) -31.3114 5.977 -5.239 0.000 -43.199 -19.424

Omnibus: 3.713 Durbin-Watson: 2.019
Prob(Omnibus): 0.156 Jarque-Bera (JB): 3.394
Skew: -0.487 Prob(JB): 0.183
Kurtosis: 3.003 Cond. No. 702.

對於數據科學家來說,掌握這些資訊意義重大,但他們的問題是常常太過信任一個自己並不真正理解的模型。因爲高維數據不夠直觀,所以在部署這些數據之前,數據科學家有必要深入瞭解數據與模型。如果盲目追求像準確度或均方誤差之類的效能指標,可能會造成嚴重的負面影響。

Statsmodels不僅具有極其詳細的統計建模,而且還能提供各種有用的數據特性和度量。例如,數據科學家們常會進行時序分解,它可以幫助他們更好地理解數據,以及分析何種轉換和演算法更爲合適,或者也可以將pinguoin用於一個不太複雜但非常精確的統計函數。

這5個Python庫太難搞!每位數據科學家都應該瞭解
圖源:Statsmodels

3.Pattern

一些成熟完善的網站用來檢索數據的方法可能更爲具體,在這種情況下用Scrapy編寫Web爬蟲就有點「大材小用」了,而Pattern就是Python中更高階的Web數據挖掘和自然語言處理模組。

Pattern不僅能無縫整合谷歌、推特和維基百科三者的數據,而且還能提供一個不太個性化的Web爬蟲和HTML DOM解析器。它採用了詞性標註、n-grams搜尋、情感分析和WordNet。不論是聚類分析,還是分類處理,又或是網路分析視覺化,經Pattern預處理後的文字數據都可用於各種機器學習演算法。

從數據檢索到預處理,再到建模和視覺化,Pattern可以處理數據科學流程中的一切問題,而且它也能在不同的庫中快速傳輸數據。

這5個Python庫太難搞!每位數據科學家都應該瞭解
圖源:unsplash

4.Mlxtend

Mlxtend是一個任何數據科學專案都可以應用的庫。它可以說是Sci-kit learn庫的擴充套件,能自動優化常見的數據科學任務:

· 全自動提取與選擇特徵。

· 擴充套件Sci-kit learn庫現有的數據轉換器,如中心化處理和事務編碼器。

· 大量的評估指標:包括偏差方差分解(即測量模型中的偏差和方差)、特徵點檢測、McNemar測試、F測試等。

· 模型視覺化,包括特徵邊界、學習曲線、PCA互動圈和富集圖繪。

· 含有許多Sci-kit Learn庫中沒有的內建數據集。

· 影象與文字預處理功能,如名稱泛化器,可以識別並轉換具有不同命名系統的文字(如:它能識別「Deer,John」,「J.Deer」,「J.D.」和「John Deer」是相同的)。

·

Mlxtend還有非常實用的影象處理功能,比如它可以提取面部標誌:

這5個Python庫太難搞!每位數據科學家都應該瞭解
圖源:Mlxtend

再來看看它的決策邊界繪製功能:

這5個Python庫太難搞!每位數據科學家都應該瞭解
圖源:Mlxtend

5.REP

與Mlxtend一樣,REP也可以被看作是Sci-kit學習庫的擴充套件,但更多的是在機器學習領域。首先,它是一個統一的Python包裝器,用於從Sci-kit-learn擴充套件而來的不同機器學習庫。它可以將Sci-kit learn與XGBoost、Pybrain、Neurolab等更專業的機器學習庫整合在一起。

例如,當數據科學家想要通過一個簡單的包裝器將XGBoost分類器轉換爲Bagging分類器,再將其轉換爲Sci-kit-learn模型時,只有REP能做到,因爲在其他庫中無法找到像這種易於包裝和轉換的演算法。

from sklearn.ensemble importBaggingClassifier
from rep.estimators importXGBoostClassifier, SklearnClassifier
clf =BaggingClassifier(base_estimator=XGBoostClassifier(), n_estimators=10)
clf =SklearnClassifier(clf)
除此之外,REP還能實現將模型從任何庫轉換爲交叉驗證(摺疊)和堆疊模型。它有一個極快的網格搜尋功能和模型工廠,可以幫助數據科學家在同一個數據集裡有效地使用多個機器學習分類器。同時使用REP和Sci-kit learn,能幫助我們更輕鬆自如地構建模型。