在網絡上看到幾位前輩寫了關於python深度學習庫的文章,對於小小白來說,因為我剛開始學python,我得承認自己看完後依然覺得雲裡霧裡的,不知道這些庫到底對我有什麼用處。所以我到網絡上搜集補充關於這些庫的說明內容,感覺在這個整理資料的過程中,對於這些python程序庫了解了更多,以下是我整理的學習筆記。
一、核心庫與統計
1.NumPy
numpy(Numerical Python extensions)是一個第三方的Python包,用於科學計算。其前身是1995年就開始開發的一個用於數組運算的庫。經過了長時間的發展,基本上成了絕大部分Python科學計算的基礎包,當然也包括所有提供Python接口的深度學習框架。NumPy作為一個通用的數組處理包,常用於有效地操作任意記錄的大型多維數組,而不會為小型多維數組犧牲太多的速度。此外也針對數組運算提供大量的數學函數庫。Numpy內部解除了Python的PIL(全局解釋器鎖),運算效率極好,是大量機器學習框架的基礎庫! NumPy構建在Numeric代碼庫上,並添加了numarray引入的特性、擴展的C-API以及創建任意類型數組的能力,這也使得NumPy適合與通用資料庫應用程式進行接口。
numpy庫可以用來存儲和處理大型矩陣,並且在一定程度上彌補了python在運算效率上的不足,正是因為numpy的存在使得python成為數值計算領域的一大利器;
2. SciPy
SciPy和Numpy聯繫很密切,Scipy一般都是操控Numpy數組來進行科學計算,所以可以說是基於Numpy之上了。它通過向用戶提供用於操作和可視化數據的高級命令和類,為交互式Python會話添加了強大的功能。SciPy函數庫在NumPy庫的基礎上增加了眾多的數學、科學以及工程計算中常用的庫函數, 包括數值積分、最優化、統計和一些專用函數。包含了幫助解決線性代數、概率論、積分計算、信號處理、圖像處理、稀疏矩陣等許多其他任務的工具。此外,SciPy 還封裝了許多新的 BLAS 和 LAPACK 函數。
3.Pandas
Pandas最初被作為金融數據分析工具而開發出來,因此,pandas為時間序列分析提供了很好的支持。 Pandas的名稱來自於面板數據(panel data)和python數據分析(data analysis)。pandas提供了大量能使我們快速便捷地處理數據的函數和方法。pandas 是基於NumPy 的一種工具,該工具是為了解決數據分析任務而創建的。Pandas 納入了大量庫和一些標準的數據模型,提供了高效地操作大型數據集所需的工具。
pandas的主要功能:具備對齊功能的數據結構DataFrame、Series、集成時間序列功能、提供豐富的數學運算和操作、靈活處理缺失數據。
4. StatsModels
statsmodels是python中用於統計計算的模塊,包含統計模型、統計測試和統計數據挖掘功能。它提供對許多不同統計模型估計的類和函數,並且可以進行統計測試和統計數據的探索。對每一個模型都會生成一個對應的統計結果。統計結果會和現有的統計包進行對比來保證其正確性。
Pandas專注於數據讀取、處理和探索。而StatsModels專注於數據的統計建模分析,使得Python有了一點R語言的味道。StatsModels支持和Pandas的交互是Python數據挖掘中的一對利刃組合。
二、可視化
5. Matplotlib
Matplotlib是Python中最常用的可視化工具之一,可以非常方便地創建海量類型地2D圖表和一些基本的3D圖表。Matplotlib最早是為了可視化癲癇病人的腦皮層電圖相關的信號而研發,因為在函數的設計上參考了MATLAB,所以叫做Matplotlib。Matplotlib首次發表於2007年,在開源和社區的推動下,現在在基於Python的各個科學計算領域都得到了廣泛應用。Matplotlib的原作者John D. Hunter博士是一名神經生物學家,2012年不幸因癌症去世,感謝他創建了這樣一個偉大的庫。Matplotlib非常強大,不過在深度學習中常用的其實只有很基礎的一些功能,藉助它的幫助,您可以構建各種圖表,從直方圖和散點圖到非笛卡爾坐標圖。 此外,許多流行的繪圖庫被設計為與matplotlib一起使用。
6. Seaborn
Seaborn是一種基於matplotlib的Python繪圖工具庫。Seaborn其實是在matplotlib的基礎上進行了更高級的API封裝。它提供了一種高度交互式界面,便於用戶能夠做出各種有吸引力的,信息量大的統計圖表。用Matplotlib最大的困難是其默認的各種參數,而Seaborn則完全避免了這一問題。一般來說,seaborn能滿足數據分析90%的繪圖需求,夠用了,如果需要複雜的自定義圖形,還是要Matplotlib。應該把Seaborn視為matplotlib的補充,而不是替代物
散點圖矩陣
線性回歸
7. Plotly
Plotly 是一個流行的庫,它可以讓你輕鬆構建複雜的圖形。該軟體包適用於交互式 Web 應用程,可實現輪廓圖、三元圖和三維圖等視覺效果。
8. Bokeh
Bokeh是一個專門針對Web瀏覽器的呈現功能的交互式可視化Python庫。Bokeh 庫使用 JavaScript 小部件在瀏覽器中創建交互式和可縮放的可視化。該庫提供了多種圖表集合,樣式可能性(styling possibilities),連結圖、添加小部件和定義回調等形式的交互能力,以及許多更有用的特性。這是Bokeh與其它可視化庫最核心的區別。
Bokeh的優勢:
Bokeh允許你通過簡單的指令就可以快速創建複雜的統計圖,
Bokeh提供到各種媒體,如HTML,Notebook文檔和伺服器的輸出
我們也可以將Bokeh可視化嵌入flask和django程序
Bokeh可以轉換寫在其它庫(如matplotlib, seaborn和ggplot)中的可視化
Bokeh能靈活地將交互式應用、布局和不同樣式選擇用於可視化
Bokeh面臨的挑戰:
與任何即將到來的開源庫一樣,Bokeh正在經歷不斷的變化和發展。所以,你今天寫的代碼可能將來並不能被完全再次使用。
與D3.js相比,Bokeh的可視化選項相對較少。而且 Bokeh 過於依賴 python 的數值計算庫,並非一個純前端的框架,使得它的使用範圍也小於 D3.js。而在純 python 的數值計算領域,也已經有 matplotlib 這種提供了與 Matlab 一模一樣的接口的數據可視化庫,Bokeh 的適用場景也並不多。
但是,它非常適合嵌入 Flask 或者 Django 的程序中,非常好用,速度也很快。
9. Pydot
Pydot 是一個用於生成複雜的定向圖和無向圖的庫。它是用純 Python 編寫的Graphviz 接口。在它的幫助下,可以顯示圖形的結構,這在構建神經網絡和基於決策樹的算法時經常用到。
三、機器學習
10. Scikit-learn
這個基於 NumPy 和 SciPy 的 Python 模塊是處理數據的最佳庫之一。它為許多標準的機器學習和數據挖掘任務提供算法,如聚類、回歸、分類、降維和模型選擇。利用 Data Science School 提高你的技能。
11. XGBoost / LightGBM / CatBoost
梯度增強算法是最流行的機器學習算法之一,它是建立一個不斷改進的基本模型,即決策樹。因此,為了快速、方便地實現這個方法而設計了專門庫。就是說,我們認為 XGBoost、LightGBM 和 CatBoost 值得特別關注。它們都是解決常見問題的競爭者,並且使用方式幾乎相同。這些庫提供了高度優化的、可擴展的、快速的梯度增強實現,這使得它們在數據科學家和 Kaggle 競爭對手中非常流行,因為在這些算法的幫助下贏得了許多比賽。
12. Eli5
通常情況下,機器學習模型預測的結果並不完全清楚,這正是 Eli5 幫助應對的挑戰。它是一個用於可視化和調試機器學習模型並逐步跟蹤算法工作的軟體包,為 scikit-learn、XGBoost、LightGBM、lightning 和 sklearn-crfsuite 庫提供支持,並為每個庫執行不同的任務。
四、深度學習
13. TensorFlow
TensorFlow 是一個流行的深度學習和機器學習框架,由 Google Brain 開發。它提供了使用具有多個數據集的人工神經網絡的能力。在最流行的 TensorFlow應用中有目標識別、語音識別等。在常規的 TensorFlow 上也有不同的 leyer-helper,如 tflearn、tf-slim、skflow 等。
14. PyTorch
PyTorch 是一個大型框架,它允許使用 GPU 加速執行張量計算,創建動態計算圖並自動計算梯度。在此之上,PyTorch 為解決與神經網絡相關的應用程式提供了豐富的 API。該庫基於 Torch,是用 C 實現的開源深度學習庫。
15. Keras
Keras 是一個用於處理神經網絡的高級庫,運行在 TensorFlow、Theano 之上,現在由於新版本的發布,還可以使用 CNTK 和 MxNet 作為後端。它簡化了許多特定的任務,並且大大減少了單調代碼的數量。然而,它可能不適合某些複雜的任務。
五、分布式深度學習
16. Dist-keras / elephas / spark-deep-learning
隨著越來越多的用例需要花費大量的精力和時間,深度學習問題變得越來越重要。然而,使用像 Apache Spark 這樣的分布式計算系統,處理如此多的數據要容易得多,這再次擴展了深入學習的可能性。因此,dist-keras、elephas 和 spark-deep-learning 都在迅速流行和發展,而且很難挑出一個庫,因為它們都是為解決共同的任務而設計的。這些包允許你在 Apache Spark 的幫助下直接訓練基於 Keras 庫的神經網絡。Spark-deep-learning 還提供了使用 Python 神經網絡創建管道的工具。
六、自然語言處理
17. NLTK
NLTK 是一組庫,一個用於自然語言處理的完整平臺。在 NLTK 的幫助下,你可以以各種方式處理和分析文本,對文本進行標記和標記,提取信息等。NLTK 也用於原型設計和建立研究系統。
18. SpaCy
SpaCy 是一個具有優秀示例、API 文檔和演示應用程式的自然語言處理庫。這個庫是用 Cython 語言編寫的,Cython 是 Python 的 C 擴展。它支持近 30 種語言,提供了簡單的深度學習集成,保證了健壯性和高準確率。SpaCy 的另一個重要特性是專為整個文檔處理設計的體系結構,無須將文檔分解成短語。
19. Gensim
Gensim 是一個用於健壯語義分析、主題建模和向量空間建模的 Python 庫,構建在Numpy和Scipy之上。它提供了流行的NLP算法的實現,如 word2vec。儘管 gensim 有自己的 models.wrappers.fasttext實現,但 fasttext 庫也可以用來高效學習詞語表示。
20. Scrapy
Scrapy 是一個用來創建網絡爬蟲,掃描網頁和收集結構化數據的庫。此外,Scrapy 可以從 API 中提取數據。由於該庫的可擴展性和可移植性,使得它用起來非常方便。
結論
本文上述所列就是數據科學領域中常見的 Python 庫。基本上,無論是從入門級選手到專業級數據挖掘、科學計算、圖像處理、人工智慧,Python在這些庫的輔助下都可以勝任。周圍好多的小夥伴都開始學習 Python了,你呢?
因為這個是整理了網上很多內容補充的資料,如果有網友覺得我用了您的內容,請私信我,我在文章底下加上出處好嗎?