十大開發必備的Python庫,可實現機器學習
譯文【51CTO.com快譯】如今,Python已是流行、且使用廣泛的編程語言之一,它已經取代了業界許多編程語言。Python備受開發人員歡迎的一項主要原因是,它能夠為用戶提供大量可供使用的庫集合。
在本文中,我們將和您討論Python中的一些庫。開發人員可以使用它們來編寫、清理和表示數據,并且能夠在現有的各種應用程序中實現機器學習的效果。它們分別是:
- TensorFlow
- Scikit-Learn
- NumPy
- Keras
- PyTorch
- LightGBM
- Eli5
- SciPy
- Theano
- Pandas
1.TensorFlow
什么是TensorFlow?
如果您目前正在使用Python進行機器學習項目開發的話,那么您一定聽說過TensorFlow這一流行的開源庫。它是由Google與Brain Team合作開發而成,主要用于機器學習類應用的開發。
TensorFlow的工作方式類似于編寫大量涉及張量(tensor)操作的新的算法庫。由于神經網絡可以很容易地被表示為計算圖形,因此它們可以使用TensorFlow,來作為張量上的一系列操作予以實現。此處,張量表示為數據的N維矩陣。
TensorFlow的特點
TensorFlow針對速度進行了優化。它利用XLA等技術,實現了快速線性代數的運算。
- 響應式構建
使用TensorFlow,我們可以輕松地可視化圖形的每一個部分。而下面將要提到的NumPy或SciKit則無此選項。
- 靈活
由于具有模塊化的特點,因此Tensorflow在功能上具有靈活的可操作性,用戶可以只選用其需要的獨立部分。
- 易于訓練
它可以通過CPU和GPU的訓練方式,輕松地實現分布式計算。
- 并行神經網絡訓練
由于TensorFlow提供了流水線式的操作,因此從某種意義上說,您可以訓練多個神經網絡和多個GPU。這對于大規模系統上的模型來說是非常高效的。
- 大型社區
毋庸置疑,由于是Google開發的,因此一大批軟件工程師會持續致力于其穩定性的改進。
- 開源
由于是開源的,因此只要有互聯網的連接,任何人都可以使用到它。
TensorFlow的接受度
大家所熟悉的Google語音搜索、以及Google相冊等應用都是由TensorFlow庫所開發的。雖然由TensorFlow所創建的庫集合都是用C和C++編寫的,但是它擁有一個復雜的Python前端。因此,您的Python代碼將會被它所編譯,然后再由C和C ++構建的TensorFlow分布式引擎所執行。
2.Scikit-Learn
什么是Scikit-Learn?
它是一個與NumPy和SciPy相關聯的Python庫,被認為是處理復雜數據的Python庫之一。Scikit-Learn有很多改進版本,其中的一種是通過交叉驗證的功能,以及提供多個參數指標,來改進諸如邏輯回歸、以及最近鄰居等多種訓練的方法。
Scikit-Learn的特點
- 交叉驗證:它提供許多方法來檢查、監督模型對于不可見數據的準確性。
- 無監督學習算法:同樣,它也提供包括聚類、因子分析、主成分分析、以及無監督神經網絡等的大量算法。
- 特征提取:能夠被用于從圖像和文本中提取特征(例如,Bag of words)。
Scikit-Learn的接受度
它包含了大量可用于實現標準機器學習、以及數據挖掘任務的算法。例如:降低維度、分類、回歸、聚類和模型選擇等。
3.NumPy
什么是NumPy?
NumPy被認為是Python中受歡迎的機器學習庫之一。TensorFlow和其他庫在內部都會使用NumPy來執行多種操作。其中,數組接口是NumPy好用、也是重要的功能之一。
NumPy特點
- 交互式:NumPy具有強交互性、且易于被使用。
- 數學性:通過復雜的數學,將實現變得非常簡單。
- 直觀:能夠將編碼、及概念變得簡單易懂。
- 強交互性:由于得到了廣泛的使用,因此它獲得了更多的開源貢獻。
NumPy的接受度
NumPy庫接口可以被用于將圖像、聲波、以及其他二進制原始流,表達為N維實數數組。為了更好地將其用于機器學習,全棧工程師有必要對其深入了解。
4.Keras
什么是Keras?
Keras被認為是酷炫的機器學習類Python庫之一。它提供了一種更容易表達神經網絡的機制。同時,Keras還提供了一些可用于編譯模型、處理數據集、圖形可視化等方面的工具。
Keras在后端內部使用的是Theano或TensorFlow。它可以被用在諸如CNTK之類的各種流行的神經網絡上。與其他機器學習類型的庫相比,由于Keras通過使用后端的基礎架構來創建計算圖形,因此其后續的執行操作相對較慢。另外,Keras的所有模型都是可被移植的。
Keras的特點
- Keras在CPU和GPU上都能夠順利地運行。
- Keras幾乎支持神經網絡中的所有模型,包括:完全連接、卷積、匯集、循環、嵌入等。此外,這些模型也可以被組合起來構建更為復雜的模型。
- Keras的模塊化特性,具有非凡的表現力、靈活性,且適合于創新類研究。
- Keras是一個完全基于Python的框架,開發人員可以輕松進行各種調試。
Keras的接受度
如今,諸如Netflix、Uber、Yelp、Instacart、Zocdoc、以及Square等眾多網站都使用到了Keras構建的交互性功能。許多初創型公司都愿意在其產品核心中用到Keras所提供的深度學習技術。
Keras包含了許多神經網絡常用的構建模塊,例如:各個層、對象、激活函數、優化器、以及一系列可供處理圖像與文本數據工具。
此外,它還提供了許多預處理數據的集合、以及預訓練的模型,其中包括:MNIST、VGG、Inception、SqueezeNet、以及ResNet等。
在接受程度上,Keras是排名第二的,被深度學習研究人員所喜愛的Python庫。一些大型科學組織,特別是CERN和NASA的研究人員,都會用到Keras。
5.PyTorch
什么是PyTorch?
PyTorch是一個大型的機器學習庫,它允許開發人員通過GPU加速,來執行張量計算、創建動態計算圖、并自動計算出梯度。此外,PyTorch還提供了豐富的API,可用于解決與神經網絡相關的應用問題。
基于Torch的PyTorch是一個用C語言實現的開源機器學習庫。當然,它也帶有Lua的包裝器。
PyTorch的特點
混合前端
新的混合前端在eager模式下,保證了易用性和靈活性。在被無縫地轉換到graph模式后,它能夠在C++的運行環境中保證速度、優化和相應的功能。
- 分布式訓練
得益于Python和C++能夠訪問到對等式通信的優點,它能夠對集合式操作和異步執行提供原生的支持,并且能夠優化研究、以及生產環境中的性能。
- Python優先
PyTorch并非是一種Python綁定的單體式(monolithic)C++框架。它是為深入地集成到Python中而構建的。因此它可以與各種流行的庫、以及Cython和Numba等軟件包一同使用。
- 庫和工具
由活躍的研究人員與開發人員所構成的社區,實現了一個豐富的工具與庫的生態系統。該系統可以被用于擴展PyTorch、并支持從計算機視覺到強化學習等領域的開發。
PyTorch的接受度
PyTorch由Facebook的人工智能研究小組所開發,主要被用于自然語言處理等應用,例如,Uber的Pyro軟件就將它用到了概率編程上。
如今,PyTorch在許多方面都超越了TensorFlow,并且持續引起了更多的關注。
6.LightGBM
什么是LightGBM?
Gradient Boosting是目前好用且流行的機器學習庫之一。它通過使用重新定義的基本模型與決策樹,來幫助開發人員構建新的算法。它所提供的LightGBM、XGBoost和CatBoost等特殊庫,有助于解決常見的各種問題。
LightGBM的特點
- 高速的計算能力,確保了較高的生產率。
- 界面直觀,且對用戶友好。
- 訓練的速度比其他深度學習庫要快。
- 在計算NaN值和其他規范值時,不容易產生錯誤。
LightGBM的接受度
由于具有高度可擴展性、能夠優化和快速實現梯度增強,因此LightGBM備受機器學習開發人員,特別是全棧工程師的歡迎。
7.Eli5
什么是Eli5?
大多數情況下,機器學習模型的預測結果并不太準確,而Eli5內置Python的機器學習庫卻有助于克服這一點。它是對所有機器學習模型的可視化和調試的組合,并且能夠跟蹤某個算法的所有步驟。
Eli5的特點
此外,Eli5能夠支持XGBoost、lighting、scikit-learn和sklearn-crfsuite等其他庫,并且可以實現它們不同的任務。
Eli5的接受度
- 適用于需要在短時間內進行大量計算的數學應用程序。
- 在與其他Python包存在依賴關系時,Eli5能夠起到重要的作用。
- 能夠在各個領域實施傳統的應用程序、以及更新的方法。
8.SciPy
什么是SciPy?
SciPy是一個面向應用程序開發人員和工程師的機器學習庫。與SciPy堆棧不同,SciPy庫包含了用于優化、線性代數、積分和統計的模塊。
SciPy的特點
SciPy庫的主要特點是使用到了NumPy來進行開發,因此它的數組充分利用了NumPy的特點。此外,SciPy提供了諸如優化、數值積分和其他特定的子模塊。這些所有子模塊里的所有功能都有著詳細配套的文檔。
SciPy的接受度
由于SciPy是一個使用NumPy來解決數學函數的庫,因此SciPy采用NumPy數組作為基本的數據結構,并附帶了用于科學編程的各種常用任務模塊。
SciPy可以輕松地處理包括:線性代數、積分(微積分)、常微分方程求解、以及信號處理在內的各項任務。
9.Theano
什么是Theano?
Theano是一個在Python中可用于計算多維數組的機器學習類框架庫。Theano的工作方式類似于TensorFlow,但是其效率不及TensorFlow,因此不太適合生產環境。不過,與TensorFlow類似,Theano也可以被用于分布式或并行的環境之中。
Theano的特點
- 與NumPy緊密集成 - 用戶能夠在Theano所編譯的函數中完整地使用到NumPy數組。
- 透明地使用GPU - 執行數據密集型計算比在CPU上更快。
- 高效的符號區分 - Theano通過一個或多個輸入,為您的函數提供衍生工具。
- 速度和穩定性優化 - 即使x非常小,也能獲得正確的log(1+x)的答案。
- 生成動態C語言代碼 - 評估表達式的速度更快更高效。
- 廣泛的單元測試和自我驗證 – 能夠檢測和診斷模型中的多種類型錯誤。
Theano的接受度
由于Theano表達式的實際語法,僅在抽象意義上定義、編譯了后續的實際計算,因此它對于習慣了正常軟件開發的初學者來說,并不太合適。不過,在被專門用于處理深度學習時,它使用到了大型神經網絡算法所需的各種計算類型。另外,由于早在2007年就被開發出來了,因此Theano被認為是深度學習研究和開發的行業標準。
我們樂觀地估計,Theano的受歡迎程度會隨著時間的推移而增長。
10.Pandas
什么是Pandas?
Pandas也是一種Python類機器學習庫,它提供了高級的數據結構和各種分析類工具。Pandas庫重要的一個特性是:能夠使用一個或兩個命令,將復雜的操作與數據進行轉換。Pandas有許多內置的分組方法,其中包括:數據、過濾以及時間序列功能。
Pandas的特點
Pandas能夠讓我們操作數據的整個過程更加容易。Pandas的功能主要包括:支持重新索引、迭代、排序、聚合、連接、以及可視化等操作。
Pandas的接受度
目前,Pandas庫的各種發布版主要集中在錯誤修復、增強功能和API修改等方面。Pandas的最近一次改進,能夠讓它實現對于數據的分組與排序。它能夠為應用選擇適合的輸出方法,并為執行各種自定義類型的操作提供支持。用戶在使用Pandas與其他庫工具一同進行數據分析時,能夠獲取較高的性能與靈活性。
原文標題:Top 10 Python Libraries You Must Know in 2019,作者:Sayantini Deb
【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】