當前位置︰首頁 > 新聞資訊 > 正文

2019 年你不可不知的十大 Python 庫2019-07-26 15:28:35 | 編輯︰hely | 查看︰ | 評論︰0

在本文中,我們將討論 Python 中的一些頂級庫,開發人員可以使用這些庫來解析、清理和表示數據,並在現有應用中實現機器學習。

作者︰Sayantini Deb 譯者︰劉志勇

在本文中,我們將討論 Python 中的一些頂級庫,開發人員可以使用這些庫來解析、清理和表示數據,並在現有應用中實現機器學習

我們將會介紹以下 10 個庫︰

TensorFlow
Scikit-Learn
NumPy
Keras
PyTorch
LightGBM
Eli5
SciPy
Theano
Pandas

Python 是目前最流行,使用最廣泛的編程語言之一,已經取代了業界許多編程語言。Python 在開發人員中受歡迎的原因有很多,其中最重要的一個原因就是 Python 有大量可供用戶使用的庫。Python 的簡單性吸引了許多開發人員為機器學習創建新的庫。由于有大量的庫,Python 在機器學習專家中非常流行。

因此,我即將介紹的第一個庫是 TensorFlow。

TensorFlow

 

 

TensorFlow 是什麼?

如果你目前正在使用 Python 進行機器學習項目,那麼你可能已經听說過這個流行的開源庫,即 TensorFlow。該庫是 Google 與 Brain Team 合作開發的。Google 的每一個機器學習應用幾乎都有 TensorFlow 的影子。

TensorFlow 的工作方式類似于一個計算庫,用于編寫設計大量張量運算的新算法。由于神經網絡可以很容易地表示為計算圖,因此它們可以用 TensorFlow 作為對張量(Tensor)的一些列操作來實現。此外,張量是表述數據的 N 維矩陣。

TensorFlow 的特點

TensorFlow 針對速度進行了優化,並利用 XLA 等技術實現快速線性代數運算。

1. 響應式構造

使用 TensorFlow,我們可以輕松地將計算圖的每一部分進行可視化,在使用 NumPy 或 SciKit 時並沒有這個選項。

2. 靈活性

TensorFlow 的一個非常重要的特性是,它的操作非常靈活。這意味著它實現了模塊化,對于你想要使其獨立的部分,它可以提供這一選項。

3. 易于訓練

對于分布式計算,它可以很容易地在 CPU 上進行訓練,也可以在 GPU 上進行訓練。

4. 並行化神經網絡訓練

TensorFlow 提供了管道。從某種意義上說,你可以訓練多個神經網絡和多個 GPU,這使得模型在大型系統上非常高效。

5. 大型社區

毋庸諱言,因為 TensorFlow 是由 Google 開發的,所以有一大群軟件工程師在不斷改進 TensorFlow 的穩定性。

6. 開源

這個機器學習庫最好的地方在于它是開源的,所以只要有互聯網,任何人都可以使用它。

TensorFlow 在哪里使用?

實際上你每天都在使用 TensorFlow,但像 Google 語音搜索或 Google 相冊這樣的應用卻是間接的。這些應用是使用這個庫進行開發的。

在 TensorFlow 中創建的所有庫都是用 C 和 C++ 編寫的。不過,它還有一個復雜的 Python 前端。你的 Python 代碼將會被編譯,然後在使用 C 和 C++ 構建的 TensorFlow 分布式執行引擎上執行。

TensorFlow 的應用數量實際上是無限的,這就是 TensorFlow 的美妙之處。

Scikit-Learn

 

 

Scikit-Learn 是什麼?

Scikit-Learn 是一個與 NumPy 和 SciPy 相關的 Python 庫。它被認為是處理復雜數據的最佳庫之一。這個庫正在進行大量更改。其中一個更改是交叉驗證功能,提供了使用多個度量的能力。許多訓練方法,如邏輯回歸和最近鄰方法,都得到了一些改進。

Scikit-Learn 的特點

1. 交叉驗證︰ 有多種方法可以檢驗監督模型對不可見數據的準確性

2. 無監督學習算法︰ Scikit-Learn 提供了大量的算法,從聚類、因子分析和主成分分析到無監督神經網絡。

3. 特征提取︰ 用于從圖像和文本中提取特征(例如詞袋)

Scikit-Learn 在哪里使用?

它包含許多用于實現標準機器學習和數據挖掘任務的算法,如降維、分類、回歸、聚類和模型選擇。

NumPy

 

 

NumPy 是什麼?

NumPy 被認為是 Python 中最受歡迎的機器學習庫之一。

TensorFlow 和其他庫在內部使用 NumPy 在張量上執行多個操作。陣列接口是 NumPy 最好也是最重要的特性。

NumPy 的特點

1. 交互性︰ NumPy 交互性強,易于使用。

2. 數學︰ 使復雜的數學實現變得非常簡單

3. 直觀性︰ 使編碼和概念的掌握變得非常容易

4. 大量的交互︰ 得益于廣泛的使用,因此有大量的開源貢獻。

NumPy 在哪里使用?

NumPy 的接口可用于將圖像、聲波和其他二進制原始流表達為 N 維實數陣列。為實現這個用于機器學習的庫,了解 NumPy 對于全棧開發人員來說很重要。

Keras

 

 

Keras 是什麼?

Keras 被認為是 Python 中最酷的機器學習庫之一。它提供了一種更簡單的機制來表達神經網絡。Keras 還為編譯模型、處理數據集、圖形可視化等提供了一些最佳實用程序。

在後端,Keras 在內部使用 Theano 或 TensorFlow,也可以使用一些最流行的神經網絡,如 CNTK。與其他機器學習庫比較,Keras 的速度相對較慢。因為它是通過使用後端架構創建計算圖,然後利用它來執行操作的。不過,Keras 的所有模型都是可移植的。

Keras 的特點

Keras 在 CPU 和 GPU 上都能順利運行。

Keras 支持幾乎所有的神經網絡模型,包括完全連接的、卷積的、池化的、遞歸的、嵌入的等等。此外,這些模型還可以組合起來構建更為復雜的模型。

Keras 在本質上是模塊化的,具有難以置信的表現力、靈活性,並易于創新研究。

Keras 是一個完全基于 Python 的框架,可以方便地進行調試和探索。

Keras 在哪里使用?

你已經在不斷地與 Keras 開發的功能進行交互︰它在 Netflix、Uber、Yelp、Instacart、Zocdoc、Square 等其他許多公司都有應用。Keras 在那些將深度學習作為產品核心的初創公司中特別受歡迎,同時也是深度學習研究人員的最愛。大型科學組織,特別是 CERN(歐洲核子研究中心)和 NASA(美國國家航空航天局)的研究人員也采用了 Keras。

Keras 包含許多常用的神經網絡構建塊的實現,例如層、目標、激活函數、優化器和一系列工具,使圖像和文本數據的處理變得更加容易。

此外,Keras 還提供了許多預處理的數據集和預訓練模型,如 MNIST、VGG、Inception、SqueezeNet、ResNet 等等。

PyTorch

 

 

PyTorch 是什麼?

PyTorch 是最大的機器學習庫,它允許開發人員利用 GPU 的加速執行張量計算,創建動態計算圖,並自動計算梯度。除此之外,PyTorch 還提供了豐富的 API,用于解決與神經網絡相關的應用問題。

這個機器學習庫是基于 Torch 的,Torch 是一個用 C 語言實現的開源機器學習庫,在 Lua 中有個包裝器。這個用 Python 編寫的機器學習庫是 2017 年推出的,自推出以來,吸引了越來越多的機器學習開發人員。

PyTorch 的特點

1. 混合前端

新的混合前端在 Eager 模式(動態圖模式)下提供了易用性和靈活性,同時在 C++ 運行時環境中無縫過渡到圖形模式,以實現速度、優化和功能。

2. 分布式訓練

通過利用 Python 和 C++ 提供的異步執行集合操作和對等通信的本地支持,優化研究和生產中的性能。

3.Python 優先

PyTorch 並非綁定到單一 C++ 框架中的 Python。它是為了深入集成到 Python 中而構建的,因此它可以與流行的庫和包(如 Cython 和 Numba 等)一起使用。

4. 庫和工具

一個由研究人員和開發人員組成的活躍社區,建立了一個豐富的工具和庫生態系統,用于擴展 PyTorch ,並支持從計算機視覺到強化學習等領域的開發。

PyTorch 在哪里使用?

PyTorch 主要用于自然語言處理等應用。PyTorch 主要是由 Facebook 的人工智能研究小組開發的。Uber 的概率編程“Pyro”軟件就是建立在這個基礎上的。PyTorch 在很多方面都超過了 TensorFlow,最近得到了很多關注。

LightGBM

 

 

LightGBM 是什麼

梯度提升(Gradient Boosting)是最好的、最流行的機器學習庫之一,它通過使用重新定義的基本模型和決策樹來幫助開發人員構建新的算法。因此,有一些專門的庫是為快速有效地實現這種方法而設計的。

這些庫分別是 LightGBM、XGBoost 和 CatBoost。所有這些庫都是幫助解決常見問題的競爭對手,可以以幾乎相似的方式加以利用。

LightGBM 的特點

1. 計算速度快,生產效率高。

2. 直觀,易于使用。

3. 比許多其他深度學習庫有更快的訓練。

4. 在考慮 NaN 值和其他規範值時不會產生錯誤。

LightGBM 在哪里使用?

這個庫提供了高度可擴展、優化和快速的梯度提升實現,這使得它在機器學習開發人員中備受歡迎。因為大多數機器學習全棧開發人員是通過使用這些算法在機器學習競賽中獲勝的。

Eli5

 

 

Eli5 是什麼?

大多數情況下,機器學習模型的預測結果並不準確,而內置 Python 的 Eli5 機器學習庫有助于克服這一挑戰。它結合了可視化和調試所有的機器學習模型,並跟蹤算法的所有工作步驟。

Eli5 的特點

此外,Eli5 還支持其他庫 XGBoost、lighting、scikit-learn 和 sklearn-crfsuite 庫。上面提到的所有庫都可以用于執行不同的任務。

Eli5 在哪里使用?

需要在短時間內進行大量計算的數學應用

在與其他 Python 包存在依賴關系的情況下,Eli5 扮演著至關重要的角色。

遺留應用和在各個領域實施較新的方法

SciPy

 

 

SciPy 是什麼?

SciPy 是一個面向應用程序開發人員和工程師的機器學習庫。你需要了解 SciPy 庫和 SciPy 棧之間的區別。SciPy 庫包含用于優化、線性代數、積分和統計的模塊。

SciPy 的特點

SciPy 庫的主要特點是使用 NumPy 開發,其數組最大限度地利用了 NumPy。

此外,SciPy 使用其特定子模塊提供了所有高效的數值例程,比如優化、數值積分和許多其他例程。

所有 SciPy 子模塊中的所有函數都有良好的文檔說明。

SciPy 在哪里使用?

SciPy 是一個使用 NumPy 求解數學函數的庫。SciPy 使用 NumPy 數組作為基本數據結構,並附帶用于科學編程中各種常用任務的模塊,包括線性代數、積分(微積分)、常微分方程求解和信號處理等任務,都可以通過 SciPy 輕松處理。

Theano

 

 

Theano 是什麼?

Theano 是 Python 中用于計算多維數組的計算框架機器學習庫。Theano 的工作方式與 TensorFlow 類似,但效率不如 TensorFlow。因為它不能適應生產環境。

此外,還可以在與 TensorFlow 類似的分布式或並行環境中使用 Theano。

Theano 的特點

1. 與 NumPy 緊密集成︰ 能夠在 Theano 編譯的函數中完全使用 NumPy 數組

2.GPU 的透明使用︰ 執行數據密集型計算要比 CPU 上快得多

3. 高效的符號微分︰ Theano 為具有一個或多個輸入的函數求導

4. 速度和穩定性的優化︰ 即使 x 非常小,也能獲得 log(1+x) 的正確答案。這只是證明 Theano 穩定性的一個例子。

5. 動態 C 代碼生成︰ 計算表達式的速度比以往都快,從而極大提高效率。

6. 廣泛的單元測試和自我驗證︰ 檢測和診斷模型中的多種類型的錯誤和歧義

Theano 在哪里使用?

Theano 表達式的實際語法是符號化的,這可能會讓習慣正常軟件開發的初學者感到不適。具體來說,表達式是以抽象的方式進行定義、編譯的,然後實際用于計算。

Theano 是專門為用于深度學習的大型神經網絡算法的計算類型而設計的。它是最早的類庫之一(2007 年開始開發),被認為是深度學習研究和開發的行業標準。Theano 目前被用于多個神經網絡項目,隨著時間的推移,Theano 的普及率也在不斷提高。

Pandas

 

 

Pandas 是什麼?

Pandas 是 Python 中的一個機器學習庫,它提供高級的數據結構和各種各樣的分析工具。這個庫最大的特性之一是能夠使用一個或兩個命令轉換復雜的數據操作。Pandas 有很多內置的分組、組合數據、過濾以及時間序列功能的方法。所有這些方法都有出色的速度指示器。

Pandas 的特點

Pandas 使操作數據的過程變得更容易。對重新索引、迭代、排序、聚合、連接和可視化等操作的支持是 Pandas 的亮點之一。

Pandas 在哪里使用?

目前,Pandas 庫的發行版本較少,其中包括數百個新功能、bug 修復、增強和 API 中的更改。Pandas 的改進在于它能夠對數據進行分組和排序,為應用方法選擇最適合的輸出,並為執行自定義類型操作提供支持。

在其他事項中,當涉及到使用 Pandas 時,數據分析是一大亮點。但是,當與其他庫和工具一起使用時,Pandas 確保了高度的功能性和良好的靈活性。

作者介紹︰

Sayantini Deb,研究分析師,供職于 Edureka。

原文鏈接︰

Top 10 Python Libraries You Must Know in 2019

上一篇︰“網信創新工作50例”揭曉 聯通大數據安全體系入選 5G醫療的7種未來下一篇︰

公眾平台

搜索"raincent"或掃描下面的二維碼

?