Python 超越許多其他編程語言,成為機(jī)器學(xué)習(xí)領(lǐng)域中最熱門最常用的編程語言之一。Python 在眾多開發(fā)者中如此受追捧的原因之一便是其擁有大量的與機(jī)器學(xué)習(xí)相關(guān)的開源框架以及工具庫(kù),本文介紹了其中最受歡迎的10大Python庫(kù)。
隨著人工智能技術(shù)的發(fā)展與普及,Python 超越了許多其他編程語言,成為了機(jī)器學(xué)習(xí)領(lǐng)域中最熱門最常用的編程語言之一。有許多原因致使 Python 在眾多開發(fā)者中如此受追捧,其中之一便是其擁有大量的與機(jī)器學(xué)習(xí)相關(guān)的開源框架以及工具庫(kù)。根據(jù) builtwith.com 的數(shù)據(jù)顯示,45% 的科技公司都傾向于使用 Python 作為人工智能與機(jī)器學(xué)習(xí)領(lǐng)域的編程語言。
使 Python 如此受歡迎主要由于:
Python 從設(shè)計(jì)之初就是為效率而生,以使項(xiàng)目從開發(fā)到部署再在運(yùn)維都能保持較高的生產(chǎn)力;
坊間有大量的基于 Python 的開源框架及工具庫(kù);
Python 易于上手,可以說是編程小白的福音;
相比起 C、Java、C++ 來講,Python 的語法更簡(jiǎn)單,更高級(jí),只需要更少行數(shù)的代碼便能實(shí)現(xiàn)其他編程語言同樣的功能;
Python 的跨平臺(tái)能力;
正是由于 Python 簡(jiǎn)單易用以及高開發(fā)效率,吸引了大量的開發(fā)者為其創(chuàng)建更多新的機(jī)器學(xué)習(xí)工具庫(kù);而又因?yàn)榇罅康臋C(jī)器學(xué)習(xí)工具庫(kù)的出現(xiàn),使得 Python 在機(jī)器學(xué)習(xí)領(lǐng)域變得如此流行。
下面我們就來探索一下機(jī)器學(xué)習(xí)領(lǐng)域中最受歡迎的十大框架或工具庫(kù):
如果你正在使用 Python 來從事機(jī)器學(xué)習(xí)項(xiàng)目,那么你一定聽說過其中一個(gè)著名的框架——Tensorflow。Tensorflow 框架主要由 Google 大腦團(tuán)隊(duì)開發(fā),主要用于深度學(xué)習(xí)計(jì)算。幾乎所有的 Google 機(jī)器學(xué)習(xí)應(yīng)用都使用了它。比如在使用 Google 語音搜索或者 Google 相冊(cè)時(shí),你其實(shí)都是在間接地在使用 Tensorflow 所構(gòu)建的模型。
Tensorflow 把神經(jīng)網(wǎng)絡(luò)運(yùn)算抽象成運(yùn)算圖(Graph),一個(gè)運(yùn)算圖中包含了大量的張量(Tensor)運(yùn)算。而張量實(shí)際上就是 N 維數(shù)據(jù)的集合。神經(jīng)網(wǎng)絡(luò)運(yùn)算的本質(zhì)是通過張量運(yùn)算來擬合輸入張量與輸出張量之間的映射關(guān)系。
并行運(yùn)算是 Tensorflow 的主要優(yōu)勢(shì)之一。也就是說你可以通過代碼設(shè)置來分配你的 CPU、GPU 計(jì)算資源來實(shí)現(xiàn)并行化的圖運(yùn)算。
Tensorflow 框架中所有的工具庫(kù)都是用 C 或者 C++ 來編寫,但它提供了用 Python 來編寫的接口封裝。事實(shí)上,你用 Python 編寫的神經(jīng)網(wǎng)絡(luò)模型最終會(huì)調(diào)用基于 C 和 C++ 編寫的 Tensorflow 內(nèi)核來執(zhí)行運(yùn)算。
Tensorflow 使用了類似 XLA(Accelerated Linear Algebra / 加速線性代數(shù))等技術(shù)對(duì)運(yùn)算過程進(jìn)行過優(yōu)化,以保證其能夠靈活地調(diào)用計(jì)算資源的同時(shí)保持高效的運(yùn)算速度。
Keras
Keras 被認(rèn)為是最酷的 Python 深度學(xué)習(xí)庫(kù)之一。如果你是深度學(xué)習(xí)開發(fā)方面的新手,那么非常建議你使用它。它提供了非常簡(jiǎn)明的機(jī)制來表達(dá)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。它也提供了許多非常棒的工具用于神經(jīng)網(wǎng)絡(luò)模型的編譯、數(shù)據(jù)的處理、以及網(wǎng)絡(luò)結(jié)構(gòu)的可視化等等。
Keras 本質(zhì)上是對(duì) Tensorflow、Theano 等基礎(chǔ)框架作進(jìn)一步的封裝,以提供統(tǒng)一的 API 來簡(jiǎn)化神經(jīng)網(wǎng)絡(luò)的構(gòu)建與訓(xùn)練。如果你打算以 Tensorflow 作為后端基礎(chǔ)框架,則必須遵循以下架構(gòu)圖:
再有,Keras 提供了許多預(yù)處理的數(shù)據(jù)集,比如 MNIST,和預(yù)訓(xùn)練的模型,比如 VGG、Inception、 ResNet 等等。
Theano
Theano 是一個(gè)用于多維數(shù)組計(jì)算的 Python 運(yùn)算框架。Theano 的工作原理與 Tensorflow 相似,但要比 Tensorflow 低效。因此它不適用于生產(chǎn)環(huán)境。
此外,Theano 還可以用于與 Tensorflow 類似的分布式或并行環(huán)境。
PyTorch
PyTorch 是最大的深度學(xué)習(xí)庫(kù),允許開發(fā)人員通過加速 GPU執(zhí)行張量計(jì)算,創(chuàng)建動(dòng)態(tài)計(jì)算圖,并自動(dòng)計(jì)算梯度。 除此之外,PyTorch 還提供豐富的 API,用于解決與神經(jīng)網(wǎng)絡(luò)相關(guān)的應(yīng)用問題。
這個(gè)深度學(xué)習(xí)庫(kù)基于Torch,這是一個(gè)用 C 語言實(shí)現(xiàn)的開源機(jī)器庫(kù),以 Lua 語言作了封裝。與 Tensorflow 的區(qū)別在于 Tensorflow 用的是 “靜態(tài)計(jì)算圖” 的概念,而 PyTorch 用的是 “動(dòng)態(tài)計(jì)算圖” 的概念。最直觀的感受是,用 PyTorch 來編寫的神經(jīng)網(wǎng)絡(luò)模型代碼更像常見的 Python 代碼。PyTorch 是在 2017 年推出的,自成立以來,該庫(kù)越來越受歡迎并吸引了越來越多的機(jī)器學(xué)習(xí)開發(fā)人員。
LightGBM
Gradient Boosting 是最好和最受歡迎的機(jī)器學(xué)習(xí)庫(kù)之一,它通過使用重新定義的基本模型和決策樹來幫助開發(fā)人員構(gòu)建新算法。 因此,有專門的庫(kù)被設(shè)計(jì)用于快速有效地實(shí)現(xiàn)該方法。這些庫(kù)包括 LightGBM, XGBoost, 和 CatBoost。這些庫(kù)互為競(jìng)爭(zhēng)對(duì)手,同樣使用了幾乎相同的思路來解決一個(gè)共同問題。這些庫(kù)都提供了高度可擴(kuò)展,優(yōu)化和快速的梯度增強(qiáng)實(shí)現(xiàn),使其在機(jī)器學(xué)習(xí)開發(fā)人員中很受歡迎。 因?yàn)榇蠖鄶?shù)機(jī)器學(xué)習(xí)開發(fā)人員通過使用這些算法贏得了機(jī)器學(xué)習(xí)競(jìng)賽。
Numpy
Numpy 是公認(rèn)的最受歡迎的 Python 機(jī)器學(xué)習(xí)庫(kù)之一。Tensorflow 以及其他的一些框架內(nèi)部都使用了 Numpy 來對(duì)張量進(jìn)行多種操作。數(shù)組接口是 Numpy 最佳及最重要的功能。這個(gè)接口可以用于把圖像、音頻、以及其他二進(jìn)制流數(shù)據(jù)表示為多維實(shí)數(shù)數(shù)組。為了把這個(gè)庫(kù)應(yīng)用到機(jī)器學(xué)習(xí)中,掌握 Numpy 的操作對(duì)于開發(fā)者而言意義重大。
Pandas
Pandas 是一個(gè) Python 機(jī)器學(xué)習(xí)庫(kù),它提供了各種高級(jí)的工具用于進(jìn)行數(shù)據(jù)分析。其中一項(xiàng)了不起的功能便是它可以用一兩行代碼就能實(shí)現(xiàn)復(fù)雜的數(shù)據(jù)操作。Pandas 有許多內(nèi)置的方法用于分組統(tǒng)計(jì)、合并數(shù)據(jù)、數(shù)據(jù)篩選、以及時(shí)間序列操作。所有的這些操作都有出色的性能表現(xiàn)。因此,使用 Pandas 通常用于數(shù)據(jù)挖掘任務(wù)。
SciPy
SciPy 是一個(gè)應(yīng)用開發(fā)者與工程師們使用的機(jī)器學(xué)習(xí)庫(kù)。然而,你需要知道的是 SciPy 庫(kù)與 SciPy-Stack 的區(qū)別。SciPy 庫(kù)是 SciPy-Stack 的一個(gè)子集。SciPy 庫(kù)包含了優(yōu)化器、線性代數(shù)、積分、插值、快速傅立葉變換、信號(hào)和圖像處理、統(tǒng)計(jì)等子模塊。所有子模塊中的函數(shù)都有完整的文檔說明,使用方便。
SciPy 庫(kù)的主要功能是基于 Numpy 來實(shí)現(xiàn)的,它的數(shù)組操作就是使用了 Numpy 的數(shù)組操作。
Scikits_Learn
Scikits-learn,又稱為 sk-learn,是一個(gè)基于 Numpy 與 SciPy 的 Python 庫(kù)。Sk-learn 被認(rèn)為是用于處理復(fù)雜數(shù)據(jù)的最優(yōu)秀的機(jī)器學(xué)習(xí)庫(kù)之一。它包含了大量用于實(shí)現(xiàn)傳統(tǒng)機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘任務(wù)的算法,比如數(shù)據(jù)降維、分類、回歸、聚類、以及模型選擇等。
隨著時(shí)間的發(fā)展,sk-learn 不斷演進(jìn)。其中包括它加入了交叉驗(yàn)證功能,提供了使用多個(gè)衡量指標(biāo)的能力。許多的訓(xùn)練方法都得到了一定的改進(jìn),如邏輯回歸、近鄰算法(KNN)等。
Eli5
通常,在機(jī)器學(xué)習(xí)任務(wù)中遇到的難題是模型的預(yù)測(cè)結(jié)果不準(zhǔn)確。而用 Python 構(gòu)建的 Eli5 機(jī)器學(xué)習(xí)庫(kù)可以幫助攻克這個(gè)難題。它為現(xiàn)有的機(jī)器學(xué)習(xí)框架提供了若干內(nèi)置的支持,比如模型數(shù)據(jù)可視化、模型調(diào)試、算法跟蹤等,使得機(jī)器學(xué)習(xí)模型對(duì)于開發(fā)者而言不再是一個(gè)黑盒子。
Eli5 支持 sk-learn、XGBoost、LightGBM、lightning、sklearn-crfsuite 等機(jī)器學(xué)習(xí)框架或機(jī)器學(xué)習(xí)庫(kù)。
這些框架與庫(kù)都能夠?qū)崿F(xiàn)以上提到的可視化、模型調(diào)試、算法跟蹤等任務(wù)。
結(jié)語:
以上便是機(jī)器學(xué)習(xí)專家們與數(shù)據(jù)科學(xué)家們普遍認(rèn)可的十大機(jī)器學(xué)習(xí)框架或工具庫(kù)。所有的這些框架與庫(kù)都值得看一看、試一試。
當(dāng)然,除了以上提到的框架與工具庫(kù)外,還有很多其他的機(jī)器學(xué)習(xí)庫(kù)也同樣值得關(guān)注。比如 Scikit-image 就是同屬于 Scikit 系列的另一個(gè)側(cè)重于圖像領(lǐng)域的工具庫(kù)。
希望本文能夠幫助你為你的項(xiàng)目選擇到合適的機(jī)器學(xué)習(xí)框架或工具庫(kù)吧。
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4764瀏覽量
100542 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8378瀏覽量
132417 -
python
+關(guān)注
關(guān)注
56文章
4782瀏覽量
84460
原文標(biāo)題:Python 機(jī)器學(xué)習(xí)庫(kù) Top 10,你值得擁有!
文章出處:【微信號(hào):AI_era,微信公眾號(hào):新智元】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論