1
雷鋒網(wǎng) AI 科技評論按,作為數(shù)據(jù)科學(xué)和機(jī)器學(xué)習(xí)相關(guān)的研究和開發(fā)人員,大家每天都要用到 python。在本文中,我們將討論一些 python 中的頂級庫,開發(fā)人員可以使用這些庫在現(xiàn)有的應(yīng)用程序中應(yīng)用、清洗和表示數(shù)據(jù),并進(jìn)行機(jī)器學(xué)習(xí)研究。
我們將討論以下 10 個(gè)庫:
TensorFlow
Scikit-Learn
Numpy
Keras
PyTorch
LightGBM
Eli5
SciPy
Theano
Pandas
簡介
python 是最流行和使用最廣泛的編程語言之一,它已經(jīng)取代了業(yè)界許多編程語言。
python 在開發(fā)人員中流行的原因有很多。然而,最重要的一點(diǎn)是它有大量的庫供用戶使用。
python 的簡單性吸引了許多開發(fā)人員為機(jī)器學(xué)習(xí)創(chuàng)建新的庫。由于有大量的庫,python 在機(jī)器學(xué)習(xí)專家中變得非常流行。
所以,這里要介紹的第一個(gè)庫是 TensorFlow。
1.TensorFlow
什么是 TensorFlow?
如果你目前正在使用 python 進(jìn)行機(jī)器學(xué)習(xí)項(xiàng)目,那么你可能聽說過這一個(gè)流行的開源庫,那就是 TensorFlow。
這個(gè)庫是由 Google 與 Brain Team 合作開發(fā)的,幾乎每一個(gè) Google 的機(jī)器學(xué)習(xí)應(yīng)用程序都用到了 TensorFlow。
TensorFlow 就像一個(gè)計(jì)算庫,用于編寫涉及大量 tensor 操作的新算法。由于神經(jīng)網(wǎng)絡(luò)可以很容易地表示為計(jì)算圖,因此它們可以使用 TensorFlow 作為 tensor 的一系列操作來實(shí)現(xiàn)。另外,tensor 是表示數(shù)據(jù)的 n 維矩陣。
TensorFlow 的特征
1.快速響應(yīng)的結(jié)構(gòu)
使用 TensorFlow,我們可以很容易地可視化圖的每個(gè)部分,這在使用 Numpy 或 SciKit 時(shí)是做不到的。
2.靈活
TensorFlow 的一個(gè)非常重要的特性是,它的操作非常靈活。這意味著它具有模塊性,可以讓你把希望獨(dú)立出來的部分分出來
3.容易訓(xùn)練
對于分布式計(jì)算來說,它很容易在 CPU 和 GPU 上訓(xùn)練。
4.并行神經(jīng)網(wǎng)絡(luò)訓(xùn)練
TensorFlow 提供了管道流,從這個(gè)意義上說,你可以訓(xùn)練多個(gè)神經(jīng)網(wǎng)絡(luò)和多個(gè) GPU,這使得模型在大型系統(tǒng)上非常有效。
5.大型社區(qū)
不用說,它是由 Google 開發(fā)的,已經(jīng)有一個(gè)龐大的軟件工程師團(tuán)隊(duì)在不斷地改進(jìn)穩(wěn)定性。
6.開源
這個(gè)機(jī)器學(xué)習(xí)庫最好的一個(gè)特點(diǎn)是,它是開源的,任何人只要有連接互聯(lián)網(wǎng)就可以使用它。
TensorFlow 被用在哪里?
你每天都在使用 TensorFlow,你使用的 Google Voice Search 或 Google Photos 等應(yīng)用程序都是使用這個(gè)庫開發(fā)的。
在 TensorFlow 創(chuàng)建的所有庫都是用 C 和 C++編寫的,但是,它有一個(gè)復(fù)雜的前端,是用 python 實(shí)現(xiàn)的。你的 python 代碼將被編譯,然后在使用 C 和 C++構(gòu)建的 TensorFlow 分布式執(zhí)行引擎上執(zhí)行。
實(shí)際上,TensorFlow 的應(yīng)用是無限的,這就是它美妙的地方。
2.Scikit-Learn
什么是 Scikit-Learn?
它是一個(gè)與 NumPy 和 SciPy 相關(guān)聯(lián)的 python 庫。它被認(rèn)為是處理復(fù)雜數(shù)據(jù)的最佳庫之一。
在這個(gè)庫中進(jìn)行了許多修改。其中一個(gè)修改是交叉驗(yàn)證特性,它提供了使用多個(gè)度量的能力。許多訓(xùn)練方法,如物流回歸和最鄰近算法,都沒有得到什么改善。
Scikit-Learn 的特性
交叉驗(yàn)證:有多種方法可以檢查不可見數(shù)據(jù)上受監(jiān)督模型的準(zhǔn)確性。
無監(jiān)督學(xué)習(xí)算法:同樣,在產(chǎn)品中有大量的算法——從聚類、因子分析、主成分分析到無監(jiān)督神經(jīng)網(wǎng)絡(luò)
特征提取:用于從圖像和文本中提取特征(例如一段文字)
Scikit Learn 被用在哪里?
它包含許多實(shí)現(xiàn)標(biāo)準(zhǔn)機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘任務(wù)的算法,如降維、分類、回歸、聚類和模型選擇。
3.Numpy
什么是 Numpy?
Numpy 被認(rèn)為是 python 中最流行的機(jī)器學(xué)習(xí)庫之一。
TensorFlow 和其他庫在內(nèi)部使用 Numpy 對 tensor 執(zhí)行多個(gè)操作。數(shù)組接口是 Numpy 的最佳和最重要的特性。
Numpy 的特性
交互性:Numpy 非常容易理解和使用
數(shù)學(xué)性:使復(fù)雜的數(shù)學(xué)實(shí)現(xiàn)變得非常簡單
直觀:真正使編碼變得容易,掌握概念也很容易
大量接口:廣泛使用,因此有很多開源貢獻(xiàn)者
Numpy 被用在哪里?
該接口可用于將圖像、聲音和其他二進(jìn)制原始流表示為 n 維實(shí)數(shù)數(shù)組。
機(jī)器學(xué)習(xí)庫的實(shí)現(xiàn),擁有 Numpy 的知識對于全棧開發(fā)人員來說是很重要的。
4.Keras
什么是 Keras?
Keras 被認(rèn)為是 python 中最酷的機(jī)器學(xué)習(xí)庫之一。它提供了一種更容易表達(dá)神經(jīng)網(wǎng)絡(luò)的機(jī)制。Keras 還為編譯模型、處理數(shù)據(jù)集、圖形可視化等提供了一些最佳實(shí)用程序。
在后端,Keras 在內(nèi)部使用 Theano 或 TensorFlow。也可以使用一些最流行的神經(jīng)網(wǎng)絡(luò),如 CNTK。當(dāng)我們將其與其他機(jī)器學(xué)習(xí)庫進(jìn)行比較時(shí),Keras 的速度相對較慢,因?yàn)樗褂煤蠖嘶A(chǔ)設(shè)施創(chuàng)建計(jì)算圖,然后利用它執(zhí)行操作。Keras 的所有模型都很輕簡。
Keras 的特征
它在 CPU 和 GPU 上都能順利運(yùn)行。
Keras 支持幾乎所有的神經(jīng)網(wǎng)絡(luò)模型——全連接、卷積、池化、循環(huán)、嵌入等。此外,這些模型可以結(jié)合起來構(gòu)建更復(fù)雜的模型。
Keras 本質(zhì)上是模塊化的,具有難以置信的表現(xiàn)力、靈活性和創(chuàng)新性研究的能力。
Keras 是一個(gè)完全基于 python 的框架,它使調(diào)試和探索變得容易。
Keras 被用在哪里?
你已經(jīng)在不斷地與使用 Keras 構(gòu)建的產(chǎn)品進(jìn)行交互—Netflix、Uber、Yelp、Instacart、Zocdoc、Square 和許多其他公司都在使用它。它在初創(chuàng)企業(yè)中尤其受歡迎,初創(chuàng)企業(yè)將深度學(xué)習(xí)放在其產(chǎn)品的核心位置。
Keras 包含許多常用的神經(jīng)網(wǎng)絡(luò)構(gòu)建塊的實(shí)現(xiàn),例如層、目標(biāo)、激活函數(shù)、優(yōu)化器和一系列工具,以使圖像和文本數(shù)據(jù)的處理更加容易。
此外,它還提供許多預(yù)處理的數(shù)據(jù)集和預(yù)訓(xùn)練的模型,如 MNIST, VGG, Inception, SqueezeNet, ResNet 等。
Keras 也是深度學(xué)習(xí)研究人員的最愛。大型科學(xué)組織,特別是 CERN and NASA 的研究人員尤其偏愛 Keras。
5.PyTorch
什么是 PyTorch?
PyTorch 是最大的機(jī)器學(xué)習(xí)庫,它允許開發(fā)人員以 GPU 的加速度執(zhí)行 tensor 計(jì)算,創(chuàng)建動態(tài)計(jì)算圖,并自動計(jì)算梯度。除此之外,PyTorch 還提供了豐富的 API 來解決與神經(jīng)網(wǎng)絡(luò)相關(guān)的應(yīng)用程序問題。
這個(gè)機(jī)器學(xué)習(xí)庫是基于 Torch 的,它是一個(gè)用 C 語言實(shí)現(xiàn)的開源機(jī)器庫,在 Lua 中進(jìn)行了封裝。
此機(jī)器學(xué)習(xí)庫(python)于 2017 年推出,自其問世以來,該庫越來越受歡迎,并吸引了越來越多的機(jī)器學(xué)習(xí)開發(fā)人員。
PyTorch 的特性
端到端 Hybrid
一種新的混合前端,提供了易于使用和具有靈活性的 Eager Mode,同時(shí)為了速度,無縫過渡到 graph mode,在 C++運(yùn)行環(huán)境中非常實(shí)用。
分布式訓(xùn)練
利用本地支持異步執(zhí)行集體操作和點(diǎn)對點(diǎn)通信(Python 和 C++),優(yōu)化研究和生產(chǎn)中的性能。
python 優(yōu)先
PyTorch 不是一個(gè)將 python 綁定到 C++框架的工具。它的構(gòu)建是為了深入集成到 python 中,以便可以與流行的庫和包(如 Cython 和 Numba)一起使用。
庫和工具
一個(gè)由研究人員和開發(fā)人員組成的活躍社區(qū)已經(jīng)建立了一個(gè)豐富的工具和庫的生態(tài)系統(tǒng),用于擴(kuò)展 PyTorch 并支持從計(jì)算機(jī)視覺到強(qiáng)化學(xué)習(xí)等領(lǐng)域的開發(fā)。
PyTorch 被用在哪里?
PyTorch 主要用于自然語言處理等領(lǐng)域的應(yīng)用程序。
它主要是由 Facebook 的人工智能研究小組開發(fā)的,Uber 的概率編程軟件「Pyro」就建立在它的基礎(chǔ)之上。
PyTorch 在很多方面都優(yōu)于 TensorFlow,最近它得到了很多關(guān)注。
6.LightGBM
什么是 LightGBM?
梯度增強(qiáng)是最好的和最流行的機(jī)器學(xué)習(xí)(ML)庫之一,它可以幫助開發(fā)人員使用重新定義的基本模型,即決策樹來構(gòu)建新的算法。因此,有專門的庫可以快速有效地實(shí)現(xiàn)這種方法。
這些庫包括 LightGBM, XGBoost 和 CatBoost。這些庫之間存在相互競爭的關(guān)系,它們都有助于解決常見問題,可以以幾乎相似的方式使用。
LightGBM 的特點(diǎn)
計(jì)算速度快,生產(chǎn)效率高。
直觀,易于使用。
比其他許多深度學(xué)習(xí)庫更快地訓(xùn)練。
在遇到 NaN 值和其他規(guī)范值時(shí)不會產(chǎn)生錯(cuò)誤。
LightGBM 被用在哪里?
這個(gè)庫提供了高度可擴(kuò)展、優(yōu)化和快速的梯度增強(qiáng)實(shí)現(xiàn),這使得它在機(jī)器學(xué)習(xí)開發(fā)人員中很受歡迎。大多數(shù)機(jī)器學(xué)習(xí)全棧開發(fā)人員通過使用這些算法贏得了機(jī)器學(xué)習(xí)競賽。
7.Eli5
什么是 Eli5?
通常,機(jī)器學(xué)習(xí)模型預(yù)測的結(jié)果并不準(zhǔn)確,python 內(nèi)置的機(jī)器學(xué)習(xí)庫 Eli5 有助于克服這一挑戰(zhàn)。它是可視化和調(diào)試所有機(jī)器學(xué)習(xí)模型的組合,并跟蹤算法的所有工作步驟。
Eli5 的特點(diǎn)
此外,Eli5 還支持其他庫,包括 xgboost、lightning、scikit-learn 和 sklearn-crfsite。所有上述庫中額每一個(gè)都可以執(zhí)行不同的任務(wù)。
Eli5 被用在哪里?
在短時(shí)間內(nèi)需要進(jìn)行大量計(jì)算的數(shù)學(xué)應(yīng)用
Eli5 在和其他 Python 包存在依賴關(guān)系的情況下發(fā)揮著至關(guān)重要的作用
在各個(gè)領(lǐng)域的傳統(tǒng)應(yīng)用程序?qū)崿F(xiàn)新方法
8.SciPy
什么是 SciPy?
SciPy 是一個(gè)面向應(yīng)用程序開發(fā)人員和工程師的機(jī)器學(xué)習(xí)庫。但是,你仍然需要知道 SciPy 庫和 SciPy 堆棧之間的區(qū)別。SciPy 庫包含用于優(yōu)化、線性代數(shù)、集成和統(tǒng)計(jì)的模塊。
SciPy 的特點(diǎn)
SciPy 庫的主要特點(diǎn)是它是使用 Numpy 開發(fā)的,它的數(shù)組充分利用了 Numpy。
此外,SciPy 還使用其特定的子模塊提供了所有有效的數(shù)值程序,如優(yōu)化、數(shù)值積分和許多其他程序。
所有 SciPy 子模塊中的所有功能都有具體的文檔注釋。
SciPy 被用在哪里?
SciPy 是一個(gè)使用 Numpy 來解數(shù)學(xué)函數(shù)的庫。SciPy 使用 Numpy 數(shù)組作為基本數(shù)據(jù)結(jié)構(gòu),并附帶用于科學(xué)編程中各種常用任務(wù)的模塊。
SciPy 可以輕松地處理線性代數(shù)、積分(微積分)、常微分方程求解和信號處理等任務(wù)。
9.Theano
什么是 Theano?
Theano 是一個(gè)用于計(jì)算多維數(shù)組的計(jì)算框架機(jī)器學(xué)習(xí)庫。它的工作原理與 TensorFlow 相似,但不如 TensorFlow 有效,因?yàn)樗鼰o法適應(yīng)生產(chǎn)環(huán)境。
此外,Theano 也可以在與 TensorFlow 類似的分布式或并行環(huán)境中使用。
Theano 的特點(diǎn)
與 Numpy 緊密集成——能夠在無編譯函數(shù)中使用完整的 Numpy 數(shù)組
高效地使用 GPU——比 CPU 執(zhí)行數(shù)據(jù)密集型計(jì)算要快得多
有效的符號區(qū)分——Theano 為具有一個(gè)或多個(gè)輸入的函數(shù)求導(dǎo)數(shù)
速度和穩(wěn)定性優(yōu)化——即使在 x 非常小的情況下,也能求出 log(1+x)的正確答案。這只是一個(gè)可以證明 Theano 穩(wěn)定性的例子
動態(tài) C 代碼生成——比以前更快地評估表達(dá)式,從而大大提高效率
廣泛的單元測試和自驗(yàn)證—檢測和診斷模型中多種類型的歧義和錯(cuò)誤
Theano 被用在哪里?
Theano 表達(dá)式的實(shí)際語法是符號化的,這對于習(xí)慣于常規(guī)軟件開發(fā)的初學(xué)者來說是很不方便的。具體來說,表達(dá)式是以抽象的方式定義、編譯的,然后直接用于計(jì)算。
它是專門為處理深度學(xué)習(xí)使用的大型神經(jīng)網(wǎng)絡(luò)算法所需的計(jì)算而設(shè)計(jì)的。它是同類庫中最早的一個(gè)(在 2007 年就開始開發(fā)了),被認(rèn)為是深度學(xué)習(xí)研究和開發(fā)的行業(yè)標(biāo)準(zhǔn)。
Theano 目前正被用于多個(gè)神經(jīng)網(wǎng)絡(luò)項(xiàng)目中,而且隨著時(shí)間的推移,Theano 的普及率也在不斷提高。
20.Pandas
什么是 Pandas?
Pandas 是 Python 中的一個(gè)機(jī)器學(xué)習(xí)庫,它提供高級的數(shù)據(jù)結(jié)構(gòu)和各種各樣的分析工具。這個(gè)庫的一個(gè)重要特性是能夠使用一個(gè)或兩個(gè)命令轉(zhuǎn)換復(fù)雜的數(shù)據(jù)操作。Pandas 有許多內(nèi)置的分組、數(shù)據(jù)組合、過濾和時(shí)間序列功能的函數(shù)。
Pandas 的特征
Pandas 確保了整個(gè)數(shù)據(jù)處理的過程更加容易。對諸如重索引、迭代、排序、聚合、連接和可視化等操作的支持是 Pandas 的特色亮點(diǎn)之一。
Pandas 被用在哪里?
目前,Pandas 庫的版本較少,其中包括數(shù)百個(gè)新功能、錯(cuò)誤修復(fù)、增強(qiáng)和 API 更改。Pandas 的改進(jìn)在于它能夠?qū)?shù)據(jù)進(jìn)行分組和排序,為使用的方法選擇最適合的輸出,并為執(zhí)行自定義類型的操作提供支持。
當(dāng)使用 Pandas 的時(shí)候,數(shù)據(jù)分析占了很大的比重。但是,當(dāng)與其他庫和工具一起使用時(shí),Pandas 確保了高性能和良好的靈活性。
python 中的 10 大頂級 機(jī)器學(xué)習(xí)庫的介紹就到這里啦,希望本文能夠幫助你開始學(xué)習(xí) python 中可用的庫。
Via:https://dzone.com/articles/top-10-python-libraries-you-must-know-in-2019
雷鋒網(wǎng)雷鋒網(wǎng)
雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。