Python機器學習庫 Top 10,你值得擁有
- 2019 年 10 月 31 日
- 筆記
導讀:隨著人工智慧技術的發展與普及,Python超越了許多其他程式語言,成為了機器學習領域中最熱門最常用的程式語言之一。有許多原因致使Python在眾多開發者中如此受追捧,其中之一便是其擁有大量的與機器學習相關的開源框架以及工具庫。
本文介紹了其中最受歡迎的10大Python庫。
作者:Mantra Malhotra
編譯:kevin
來源:優達學城Udacity(ID:youdaxue)
根據builtwith.com的數據顯示,45%的科技公司都傾向於使用Python作為人工智慧與機器學習領域的程式語言。
Python如此受歡迎主要由於:
- Python從設計之初就是為效率而生,以使項目從開發到部署再在運維都能保持較高的生產力;
- 坊間有大量的基於Python的開源框架及工具庫;
- Python易於上手,可以說是編程小白的福音;
- 相比起C、Java、C++來講,Python的語法更簡單,更高級,只需要更少行數的程式碼便能實現其他程式語言同樣的功能;
- Python的跨平台能力。
正是由於Python簡單易用以及高開發效率,吸引了大量的開發者為其創建更多新的機器學習工具庫;而又因為大量的機器學習工具庫的出現,使得Python在機器學習領域變得如此流行。
下面我們就來探索一下機器學習領域中最受歡迎的十大框架或工具庫:
01 Tensorflow

如果你正在使用Python來從事機器學習項目,那麼你一定聽說過其中一個著名的框架——Tensorflow。Tensorflow框架主要由Google大腦團隊開發,主要用於深度學習計算。幾乎所有的Google機器學習應用都使用了它。比如在使用Google語音搜索或者Google相冊時,你其實都是在間接地在使用Tensorflow所構建的模型。
Tensorflow把神經網路運算抽象成運算圖(Graph),一個運算圖中包含了大量的張量(Tensor)運算。而張量實際上就是N維數據的集合。神經網路運算的本質是通過張量運算來擬合輸入張量與輸出張量之間的映射關係。
並行運算是Tensorflow的主要優勢之一。也就是說你可以通過程式碼設置來分配你的CPU、GPU計算資源來實現並行化的圖運算。
Tensorflow框架中所有的工具庫都是用C或者C++來編寫,但它提供了用Python來編寫的介面封裝。事實上,你用Python編寫的神經網路模型最終會調用基於C和C++編寫的Tensorflow內核來執行運算。
Tensorflow使用了類似XLA(Accelerated Linear Algebra/加速線性代數)等技術對運算過程進行過優化,以保證其能夠靈活地調用計算資源的同時保持高效的運算速度。
02 Keras

Keras被認為是最酷的Python深度學習庫之一。如果你是深度學習開發方面的新手,那麼非常建議你使用它。它提供了非常簡明的機制來表達神經網路結構。它也提供了許多非常棒的工具用於神經網路模型的編譯、數據的處理、以及網路結構的可視化等等。
Keras本質上是對Tensorflow、Theano等基礎框架作進一步的封裝,以提供統一的API來簡化神經網路的構建與訓練。如果你打算以Tensorflow作為後端基礎框架,則必須遵循以下架構圖:

再有,Keras提供了許多預處理的數據集,比如MNIST,和預訓練的模型,比如VGG、Inception、 ResNet等等。
03 Theano

Theano 是一個用於多維數組計算的 Python 運算框架。Theano 的工作原理與 Tensorflow 相似,但要比Tensorflow 低效。因此它不適用於生產環境。
此外,Theano還可以用於與Tensorflow類似的分散式或並行環境。
04 PyTorch

PyTorch是最大的深度學習庫,允許開發人員通過加速GPU執行張量計算,創建動態計算圖,並自動計算梯度。除此之外,PyTorch還提供豐富的API,用於解決與神經網路相關的應用問題。
這個深度學習庫基於Torch,這是一個用C語言實現的開源機器庫,以Lua語言作了封裝。與Tensorflow的區別在於Tensorflow用的是「靜態計算圖」的概念,而PyTorch用的是「動態計算圖」的概念。
最直觀的感受是,用PyTorch來編寫的神經網路模型程式碼更像常見的Python程式碼。PyTorch是在2017年推出的,自成立以來,該庫越來越受歡迎並吸引了越來越多的機器學習開發人員。
05 LightGBM

Gradient Boosting是最好和最受歡迎的機器學習庫之一,它通過使用重新定義的基本模型和決策樹來幫助開發人員構建新演算法。因此,有專門的庫被設計用於快速有效地實現該方法。這些庫包括LightGBM, XGBoost, 和CatBoost。這些庫互為競爭對手,同樣使用了幾乎相同的思路來解決一個共同問題。這些庫都提供了高度可擴展,優化和快速的梯度增強實現,使其在機器學習開發人員中很受歡迎。因為大多數機器學習開發人員通過使用這些演算法贏得了機器學習競賽。
06 Numpy

Numpy是公認的最受歡迎的Python機器學習庫之一。Tensorflow以及其他的一些框架內部都使用了Numpy來對張量進行多種操作。
數組介面是Numpy最佳及最重要的功能。這個介面可以用於把影像、音頻、以及其他二進位流數據表示為多維實數數組。為了把這個庫應用到機器學習中,掌握Numpy的操作對於開發者而言意義重大。
07 Pandas

Pandas是一個Python機器學習庫,它提供了各種高級的工具用於進行數據分析。其中一項了不起的功能便是它可以用一兩行程式碼就能實現複雜的數據操作。Pandas有許多內置的方法用於分組統計、合併數據、數據篩選、以及時間序列操作。所有的這些操作都有出色的性能表現。因此,使用Pandas通常用於數據挖掘任務。
08 SciPy

SciPy是一個應用開發者與工程師們使用的機器學習庫。然而,你需要知道的是SciPy庫與SciPy-Stack的區別。SciPy庫是SciPy-Stack的一個子集。SciPy庫包含了優化器、線性代數、積分、插值、快速傅立葉變換、訊號和影像處理、統計等子模組。所有子模組中的函數都有完整的文檔說明,使用方便。
SciPy庫的主要功能是基於Numpy來實現的,它的數組操作就是使用了Numpy的數組操作。
09 Scikits-Learn

Scikits-learn,又稱為sk-learn,是一個基於Numpy與SciPy的Python庫。Sk-learn被認為是用於處理複雜數據的最優秀的機器學習庫之一。它包含了大量用於實現傳統機器學習和數據挖掘任務的演算法,比如數據降維、分類、回歸、聚類、以及模型選擇等。
隨著時間的發展,sk-learn不斷演進。其中包括它加入了交叉驗證功能,提供了使用多個衡量指標的能力。許多的訓練方法都得到了一定的改進,如邏輯回歸、近鄰演算法(KNN)等。
10 Eli5

通常,在機器學習任務中遇到的難題是模型的預測結果不準確。而用Python構建的Eli5機器學習庫可以幫助攻克這個難題。它為現有的機器學習框架提供了若干內置的支援,比如模型數據可視化、模型調試、演算法跟蹤等,使得機器學習模型對於開發者而言不再是一個黑盒子。
Eli5支援sk-learn、XGBoost、LightGBM、lightning、sklearn-crfsuite等機器學習框架或機器學習庫。
這些框架與庫都能夠實現以上提到的可視化、模型調試、演算法跟蹤等任務。
結語
以上便是機器學習專家們與數據科學家們普遍認可的十大機器學習框架或工具庫。所有的這些框架與庫都值得看一看、試一試。
當然,除了以上提到的框架與工具庫外,還有很多其他的機器學習庫也同樣值得關注。比如Scikit-image就是同屬於Scikit系列的另一個側重於影像領域的工具庫。
希望本文能夠幫助你為你的項目選擇到合適的機器學習框架或工具庫吧。
原文:
https://hackernoon.com/top-10-libraries-in-python-to-implement-machine-learning-12602cf5dc61
有話要說?
Q: 你都用過哪些庫?
歡迎留言與大家分享
猜你想看?
- 10本書,從Python小白進階數據分析、人工智慧大神(建議收藏)
- 關於數據預處理的7個重要知識點,全在這兒了!
- 讓AI學習AI:自動化機器學習的概述、發展和研究意義
- 通過Python讓數據產生價值,做到這4個字就夠了
更多精彩?
在公眾號對話框輸入以下關鍵詞
查看更多優質內容!
PPT | 報告 | 讀書 | 書單 | 乾貨
大數據 | 揭秘 | Python | 可視化
AI | 人工智慧 | 5G | 中台
機器學習 | 深度學習 | 神經網路
合伙人 | 1024 | 段子 | 數學
覺得不錯,請把這篇文章分享給你的朋友
轉載 / 投稿請聯繫:[email protected]
更多精彩,請在後台點擊「歷史文章」查看