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