2019年你不可不知的十大Python庫,可實現(xiàn)機(jī)器學(xué)習(xí)
在本文中,我們將討論 Python 中的一些優(yōu)選庫,開發(fā)人員可以使用這些庫來解析、清理和表示數(shù)據(jù),并在現(xiàn)有應(yīng)用中實現(xiàn)機(jī)器學(xué)習(xí)。
我們將會介紹以下 10 個庫:
TensorFlow Scikit-Learn NumPy Keras PyTorch LightGBM Eli5 SciPy Theano Pandas
Python 是目前流行,使用廣泛的編程語言之一,已經(jīng)取代了業(yè)界許多編程語言。Python 在開發(fā)人員中受歡迎的原因有很多,其中最重要的一個原因就是 Python 有大量可供用戶使用的庫。Python 的簡單性吸引了許多開發(fā)人員為機(jī)器學(xué)習(xí)創(chuàng)建新的庫。由于有大量的庫,Python 在機(jī)器學(xué)習(xí)專家中非常流行。
因此,我即將介紹的第一個庫是 TensorFlow。
TensorFlow

TensorFlow 是什么?
如果你目前正在使用 Python 進(jìn)行機(jī)器學(xué)習(xí)項目,那么你可能已經(jīng)聽說過這個流行的開源庫,即 TensorFlow。該庫是 Google 與 Brain Team 合作開發(fā)的。Google 的每一個機(jī)器學(xué)習(xí)應(yīng)用幾乎都有 TensorFlow 的影子。
TensorFlow 的工作方式類似于一個計算庫,用于編寫設(shè)計大量張量運(yùn)算的新算法。由于神經(jīng)網(wǎng)絡(luò)可以很容易地表示為計算圖,因此它們可以用 TensorFlow 作為對張量(Tensor)的一些列操作來實現(xiàn)。此外,張量是表述數(shù)據(jù)的 N 維矩陣。
TensorFlow 的特點(diǎn)
TensorFlow 針對速度進(jìn)行了優(yōu)化,并利用 XLA 等技術(shù)實現(xiàn)快速線性代數(shù)運(yùn)算。
- 響應(yīng)式構(gòu)造:使用 TensorFlow,我們可以輕松地將計算圖的每一部分進(jìn)行可視化,在使用 NumPy 或 SciKit 時并沒有這個選項。
- 靈活性:TensorFlow 的一個非常重要的特性是,它的操作非常靈活。這意味著它實現(xiàn)了模塊化,對于你想要使其獨(dú)立的部分,它可以提供這一選項。
- 易于訓(xùn)練:對于分布式計算,它可以很容易地在 CPU 上進(jìn)行訓(xùn)練,也可以在 GPU 上進(jìn)行訓(xùn)練。
- 并行化神經(jīng)網(wǎng)絡(luò)訓(xùn)練:TensorFlow 提供了管道。從某種意義上說,你可以訓(xùn)練多個神經(jīng)網(wǎng)絡(luò)和多個 GPU,這使得模型在大型系統(tǒng)上非常高效。
- 大型社區(qū):毋庸諱言,因為 TensorFlow 是由 Google 開發(fā)的,所以有一大群軟件工程師在不斷改進(jìn) TensorFlow 的穩(wěn)定性。
- 開源:這個機(jī)器學(xué)習(xí)庫最好的地方在于它是開源的,所以只要有互聯(lián)網(wǎng),任何人都可以使用它。
TensorFlow 在哪里使用?
實際上你每天都在使用 TensorFlow,但像 Google 語音搜索或 Google 相冊這樣的應(yīng)用卻是間接的。這些應(yīng)用是使用這個庫進(jìn)行開發(fā)的。
在 TensorFlow 中創(chuàng)建的所有庫都是用 C 和 C++ 編寫的。不過,它還有一個復(fù)雜的 Python 前端。你的 Python 代碼將會被編譯,然后在使用 C 和 C++ 構(gòu)建的 TensorFlow 分布式執(zhí)行引擎上執(zhí)行。
TensorFlow 的應(yīng)用數(shù)量實際上是無限的,這就是 TensorFlow 的美妙之處。
Scikit-Learn
Scikit-Learn 是什么?
Scikit-Learn 是一個與 NumPy 和 SciPy 相關(guān)的 Python 庫。它被認(rèn)為是處理復(fù)雜數(shù)據(jù)的優(yōu)選庫之一。這個庫正在進(jìn)行大量更改。其中一個更改是交叉驗證功能,提供了使用多個度量的能力。許多訓(xùn)練方法,如邏輯回歸和最近鄰方法,都得到了一些改進(jìn)。
Scikit-Learn 的特點(diǎn)
- 交叉驗證:有多種方法可以檢驗監(jiān)督模型對不可見數(shù)據(jù)的準(zhǔn)確性。
- 無監(jiān)督學(xué)習(xí)算法:Scikit-Learn 提供了大量的算法,從聚類、因子分析和主成分分析到無監(jiān)督神經(jīng)網(wǎng)絡(luò)。
- 特征提?。河糜趶膱D像和文本中提取特征(例如詞袋)。
Scikit-Learn 在哪里使用?
它包含許多用于實現(xiàn)標(biāo)準(zhǔn)機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘任務(wù)的算法,如降維、分類、回歸、聚類和模型選擇。
NumPy
NumPy 是什么?
NumPy 被認(rèn)為是 Python 中受歡迎的機(jī)器學(xué)習(xí)庫之一。
TensorFlow 和其他庫在內(nèi)部使用 NumPy 在張量上執(zhí)行多個操作。數(shù)組接口是 NumPy 最好也是最重要的特性。
NumPy 的特點(diǎn)
- 交互性:NumPy 交互性強(qiáng),易于使用。
- 數(shù)學(xué):使復(fù)雜的數(shù)學(xué)實現(xiàn)變得非常簡單。
- 直觀性:使編碼和概念的掌握變得非常容易。
- 大量的交互:得益于廣泛的使用,因此有大量的開源貢獻(xiàn)。
NumPy 在哪里使用?
NumPy 的接口可用于將圖像、聲波和其他二進(jìn)制原始流表達(dá)為 N 維數(shù)組。為實現(xiàn)這個用于機(jī)器學(xué)習(xí)的庫,了解 NumPy 對于全棧開發(fā)人員來說很重要。
Keras
Keras 是什么?
Keras 被認(rèn)為是 Python 中最酷的機(jī)器學(xué)習(xí)庫之一。它提供了一種更簡單的機(jī)制來表達(dá)神經(jīng)網(wǎng)絡(luò)。Keras 還為編譯模型、處理數(shù)據(jù)集、圖形可視化等提供了一些最佳實用程序。
在后端,Keras 在內(nèi)部使用 Theano 或 TensorFlow,也可以使用一些最流行的神經(jīng)網(wǎng)絡(luò),如 CNTK。與其他機(jī)器學(xué)習(xí)庫比較,Keras 的速度相對較慢。因為它是通過使用后端架構(gòu)創(chuàng)建計算圖,然后利用它來執(zhí)行操作的。不過,Keras 的所有模型都是可移植的。
Keras 的特點(diǎn)
- 1.Keras 在 CPU 和 GPU 上都能順利運(yùn)行。
- 2.Keras 支持幾乎所有的神經(jīng)網(wǎng)絡(luò)模型,包括完全連接的、卷積的、池化的、遞歸的、嵌入的等等。此外,這些模型還可以組合起來構(gòu)建更為復(fù)雜的模型。
- 3.Keras 在本質(zhì)上是模塊化的,具有難以置信的表現(xiàn)力、靈活性,并易于創(chuàng)新研究。
- 4.Keras 是一個完全基于 Python 的框架,可以方便地進(jìn)行調(diào)試和探索。
Keras 在哪里使用?
你已經(jīng)在不斷地與 Keras 開發(fā)的功能進(jìn)行交互:它在 Netflix、Uber、Yelp、Instacart、Zocdoc、Square 等其他許多公司都有應(yīng)用。Keras 在那些將深度學(xué)習(xí)作為產(chǎn)品核心的初創(chuàng)公司中特別受歡迎,同時也是深度學(xué)習(xí)研究人員的最愛。大型科學(xué)組織,特別是 CERN(歐洲核子研究中心)和 NASA(美國國家航空航天局)的研究人員也采用了 Keras。
Keras 包含許多常用的神經(jīng)網(wǎng)絡(luò)構(gòu)建塊的實現(xiàn),例如層、目標(biāo)、激活函數(shù)、優(yōu)化器和一系列工具,使圖像和文本數(shù)據(jù)的處理變得更加容易。
此外,Keras 還提供了許多預(yù)處理的數(shù)據(jù)集和預(yù)訓(xùn)練模型,如 MNIST、VGG、Inception、SqueezeNet、ResNet 等等。
PyTorch
PyTorch 是什么?
PyTorch 是最大的機(jī)器學(xué)習(xí)庫,它允許開發(fā)人員利用 GPU 的加速執(zhí)行張量計算,創(chuàng)建動態(tài)計算圖,并自動計算梯度。除此之外,PyTorch 還提供了豐富的 API,用于解決與神經(jīng)網(wǎng)絡(luò)相關(guān)的應(yīng)用問題。
這個機(jī)器學(xué)習(xí)庫是基于 Torch 的,Torch 是一個用 C 語言實現(xiàn)的開源機(jī)器學(xué)習(xí)庫,在 Lua 中有個包裝器。這個用 Python 編寫的機(jī)器學(xué)習(xí)庫是 2017 年推出的,自推出以來,吸引了越來越多的機(jī)器學(xué)習(xí)開發(fā)人員。
PyTorch 的特點(diǎn)
- 混合前端:新的混合前端在 Eager 模式(動態(tài)圖模式)下提供了易用性和靈活性,同時在 C++ 運(yùn)行時環(huán)境中無縫過渡到圖形模式,以實現(xiàn)速度、優(yōu)化和功能。
- 分布式訓(xùn)練:通過利用 Python 和 C++ 提供的異步執(zhí)行集合操作和對等通信的本地支持,優(yōu)化研究和生產(chǎn)中的性能。
- Python 優(yōu)先:PyTorch 并非綁定到單一 C++ 框架中的 Python。它是為了深 入集成到 Python 中而構(gòu)建的,因此它可以與流行的庫和包(如 Cython 和 Numba 等)一起使用。
- 庫和工具:一個由研究人員和開發(fā)人員組成的活躍社區(qū),建立了一個豐富的工具和庫生態(tài)系統(tǒng),用于擴(kuò)展 PyTorch ,并支持從計算機(jī)視覺到強(qiáng)化學(xué)習(xí)等領(lǐng)域的開發(fā)。
PyTorch 在哪里使用?
PyTorch 主要用于自然語言處理等應(yīng)用。PyTorch 主要是由 Facebook 的人工智能研究小組開發(fā)的。Uber 的概率編程“Pyro”軟件就是建立在這個基礎(chǔ)上的。PyTorch 在很多方面都超過了 TensorFlow,最近得到了很多關(guān)注。
LightGBM
LightGBM 是什么
梯度提升(Gradient Boosting)是最好的、最流行的機(jī)器學(xué)習(xí)庫之一,它通過使用重新定義的基本模型和決策樹來幫助開發(fā)人員構(gòu)建新的算法。因此,有一些專門的庫是為快速有效地實現(xiàn)這種方法而設(shè)計的。
這些庫分別是 LightGBM、XGBoost 和 CatBoost。所有這些庫都是幫助解決常見問題的競爭對手,可以以幾乎相似的方式加以利用。
LightGBM 的特點(diǎn)
- 計算速度快,生產(chǎn)效率高。
- 直觀,易于使用。
- 比許多其他深度學(xué)習(xí)庫有更快的訓(xùn)練。
- 在考慮 NaN 值和其他規(guī)范值時不會產(chǎn)生錯誤。
LightGBM 在哪里使用?
這個庫提供了高度可擴(kuò)展、優(yōu)化和快速的梯度提升實現(xiàn),這使得它在機(jī)器學(xué)習(xí)開發(fā)人員中備受歡迎。因為大多數(shù)機(jī)器學(xué)習(xí)全棧開發(fā)人員是通過使用這些算法在機(jī)器學(xué)習(xí)競賽中獲勝的。
Eli5
Eli5 是什么?
大多數(shù)情況下,機(jī)器學(xué)習(xí)模型的預(yù)測結(jié)果并不準(zhǔn)確,而內(nèi)置 Python 的 Eli5 機(jī)器學(xué)習(xí)庫有助于克服這一挑戰(zhàn)。它結(jié)合了可視化和調(diào)試所有的機(jī)器學(xué)習(xí)模型,并跟蹤算法的所有工作步驟。
Eli5 的特點(diǎn)
Eli5 支持 XGBoost、lighting、scikit-learn 和 sklearn-crfsuite 庫。上面提到的所有庫都可以用于執(zhí)行不同的任務(wù)。
Eli5 在哪里使用?
- 需要在短時間內(nèi)進(jìn)行大量計算的數(shù)學(xué)應(yīng)用
- 在與其他 Python 包存在依賴關(guān)系的情況下,Eli5 扮演著至關(guān)重要的角色。
- 遺留應(yīng)用和在各個領(lǐng)域?qū)嵤┹^新的方法
SciPy
SciPy 是什么?
SciPy 是一個面向應(yīng)用程序開發(fā)人員和工程師的機(jī)器學(xué)習(xí)庫。你需要了解 SciPy 庫和 SciPy 棧之間的區(qū)別。SciPy 庫包含用于優(yōu)化、線性代數(shù)、積分和統(tǒng)計的模塊。
SciPy 的特點(diǎn)
SciPy 庫的主要特點(diǎn)是使用 NumPy 開發(fā),其數(shù)組最大限度地利用了 NumPy。此外,SciPy 使用其特定子模塊提供了所有高效的數(shù)值例程,比如優(yōu)化、數(shù)值積分和許多其他例程。
所有 SciPy 子模塊中的所有函數(shù)都有良好的文檔說明。
SciPy 在哪里使用?
SciPy 是一個使用 NumPy 求解數(shù)學(xué)函數(shù)的庫。SciPy 使用 NumPy 數(shù)組作為基本數(shù)據(jù)結(jié)構(gòu),并附帶用于科學(xué)編程中各種常用任務(wù)的模塊,包括線性代數(shù)、積分(微積分)、常微分方程求解和信號處理等任務(wù),都可以通過 SciPy 輕松處理。
Theano
Theano 是什么?
Theano 是 Python 中用于計算多維數(shù)組的計算框架機(jī)器學(xué)習(xí)庫。Theano 的工作方式與 TensorFlow 類似,但效率不如 TensorFlow。因為它不能適應(yīng)生產(chǎn)環(huán)境。
此外,還可以在與 TensorFlow 類似的分布式或并行環(huán)境中使用 Theano。
Theano 的特點(diǎn)
- 與 NumPy 緊密集成:能夠在 Theano 編譯的函數(shù)中完全使用 NumPy 數(shù)組。
- GPU 的透明使用:執(zhí)行數(shù)據(jù)密集型計算要比 CPU 上快得多。
- 高效的符號微分:Theano 為具有一個或多個輸入的函數(shù)求導(dǎo)。
- 速度和穩(wěn)定性的優(yōu)化:即使 x 非常小,也能獲得 log(1+x) 的正確答案。這只是證明 Theano 穩(wěn)定性的一個例子。
- 動態(tài) C 代碼生成:計算表達(dá)式的速度比以往都快,從而極大提高效率。
- 廣泛的單元測試和自我驗證:檢測和診斷模型中的多種類型的錯誤和歧義。
Theano 在哪里使用?
Theano 表達(dá)式的實際語法是符號化的,這可能會讓習(xí)慣正常軟件開發(fā)的初學(xué)者感到不適。具體來說,表達(dá)式是以抽象的方式進(jìn)行定義、編譯的,然后實際用于計算。
Theano 是專門為用于深度學(xué)習(xí)的大型神經(jīng)網(wǎng)絡(luò)算法的計算類型而設(shè)計的。它是最早的類庫之一(2007 年開始開發(fā)),被認(rèn)為是深度學(xué)習(xí)研究和開發(fā)的行業(yè)標(biāo)準(zhǔn)。Theano 目前被用于多個神經(jīng)網(wǎng)絡(luò)項目,隨著時間的推移,Theano 的普及率也在不斷提高。
Pandas
Pandas 是什么?
Pandas 是 Python 中的一個機(jī)器學(xué)習(xí)庫,它提供高級的數(shù)據(jù)結(jié)構(gòu)和各種各樣的分析工具。這個庫最大的特性之一是能夠使用一個或兩個命令轉(zhuǎn)換復(fù)雜的數(shù)據(jù)操作。Pandas 有很多內(nèi)置的分組、組合數(shù)據(jù)、過濾以及時間序列功能的方法。所有這些方法都有出色的速度指示器。
Pandas 的特點(diǎn)
Pandas 使操作數(shù)據(jù)的過程變得更容易。對重新索引、迭代、排序、聚合、連接和可視化等操作的支持是 Pandas 的亮點(diǎn)之一。
Pandas 在哪里使用?
目前,Pandas 庫的發(fā)行版本較少,其中包括數(shù)百個新功能、bug 修復(fù)、增強(qiáng)和 API 中的更改。Pandas 的改進(jìn)在于它能夠?qū)?shù)據(jù)進(jìn)行分組和排序,為應(yīng)用方法選擇最適合的輸出,并為執(zhí)行自定義類型操作提供支持。
在其他事項中,當(dāng)涉及到使用 Pandas 時,數(shù)據(jù)分析是一大亮點(diǎn)。但是,當(dāng)與其他庫和工具一起使用時,Pandas 確保了高度的功能性和良好的靈活性。