流行的 Python 機器學(xué)習(xí)庫的趨勢和比較
Python 是全球最流行的編程語言之一,擁有越來越多的庫和框架。看看最新的。
Python 是全球最流行的編程語言之一,擁有越來越多的庫和框架來促進 AI 和ML 開發(fā)。Python 中有超過 250 個庫,要知道哪個庫最適合您的項目并跟上所有這些庫帶來的技術(shù)變化和趨勢,可能會有點令人困惑。
下面是我使用過的流行的 Python 機器學(xué)習(xí)庫。我盡我所能根據(jù)哪些場景使用它們來對它們進行分類。除了這些之外,還有很多庫,但我無法談?wù)撐覜]有使用過的庫,我認為這些是使用最多的庫。
NumPy
NumPy 是一個眾所周知 的通用數(shù)組處理包,與其他機器學(xué)習(xí)包不同。對于 n 維數(shù)組(向量、矩陣和高階矩陣),NumPy 提供了高性能(本機編譯)支持和對各種操作的支持。它支持向量化操作,特別是,將 Python 表達式轉(zhuǎn)換為低級代碼調(diào)度,隱式循環(huán)跨數(shù)據(jù)的不同子集。
NumPy 函數(shù)
numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None, axis=0)
函數(shù)的 start 和 stop 參數(shù)都是必需的,它們返回的值均勻分布在預(yù)定的時間間隔內(nèi)。
- numpy.repeat
使用 numpy.repeat(a, repeats, axis=None) 方法重復(fù)數(shù)組的元素。第二個輸入重復(fù)指定重復(fù)次數(shù)。
- numpy.random.randint
函數(shù) numpy.random.randint(low, high=None, size=None, dtype='l') 從 [low, high] 返回隨機整數(shù)。如果高參數(shù)不存在(無),則從范圍 [0, low] 中選擇隨機數(shù)。
為什么 Numpy 如此受歡迎?
簡而言之,NumPy 優(yōu)化和預(yù)編譯的 C 代碼可以處理所有繁重的工作,使其比標準Python 數(shù)組更快。
NumPy 使科學(xué)計算中經(jīng)常使用的許多數(shù)學(xué)程序變得快速且易于使用。
Pandas
Pandas 正迅速成為使用最廣泛的 Python 數(shù)據(jù)分析庫,因為它支持處理“關(guān)系”和“標記”數(shù)據(jù)的快速、適應(yīng)性和表達性數(shù)據(jù)結(jié)構(gòu)。存在需要 Pandas 的實際和現(xiàn)實世界的 Python 數(shù)據(jù)分析問題。Pandas 提供徹底優(yōu)化和高度可靠的性能。只有 C 或 Python 用于純粹編寫后端代碼。
一些Pandas功能
pd.read_csv, pd.read_excel
要提到的第一個函數(shù)是 read_csv 或 read_excel。這些功能已經(jīng)提供了清晰的解釋。我利用它們將 CSV 或 Excel 文件中的數(shù)據(jù)讀取為 pandas DataFrame 格式。
.read csv() 函數(shù)還可以使用以下語法讀取 .txt 文件:
- df.query()
布爾表達式可以過濾或查詢數(shù)據(jù)。我可以使用查詢函數(shù)作為字符串應(yīng)用過濾條件。與許多其他程序相比,它提供了更多的自由。
僅返回 A 大于 4 的行。
- df.iloc()
我將行和列索引作為參數(shù)傳遞給該函數(shù),該函數(shù)返回 DataFrame 的適當(dāng)子集。
- df[‘’].dtypes
另一個非?;A(chǔ)和流行的功能。在開始任何分析、可視化或預(yù)測建模之前,必須知道變量的數(shù)據(jù)類型。使用這種技術(shù),您可以獲得每一列的數(shù)據(jù)類型。
- df.dtypes
Pandas vs Vaex
Vaex Python 是 Pandas 庫的替代品,它使用 Out of Core Dataframe 更快地計算大量數(shù)據(jù)。為了查看和研究大型表格數(shù)據(jù)集,Vaex 是一個高性能 Python 模塊,用于惰性核心外數(shù)據(jù)幀(類似于 Pandas)。每秒可以使用簡單的統(tǒng)計數(shù)據(jù)計算超過 10 億行。它支持各種可視化,允許大量交互式數(shù)據(jù)探索。
TensorFlow
TensorFlow 是由 Google創(chuàng)建和發(fā)布的用于快速數(shù)值計算的 Python 庫 。Tensorflow 使用與 Theano 有所不同的語言和函數(shù)名稱,這可能會使從 Theano 的切換變得比它必須的更復(fù)雜。然而,Tensorflow 中的整個計算圖的運行方式與 Theano 中的類似,具有相同的優(yōu)點和缺點。即使對計算圖的修改對性能有重大影響,Tensorflow 的 eval 函數(shù)也只是讓觀察中間狀態(tài)變得稍微容易一些。與幾年前的 Theano 和 Caffe 相比,Tensorflow 是首選的深度學(xué)習(xí)技術(shù)。
TensorFlow 內(nèi)置函數(shù)
- tf.zeros_like
該函數(shù)的輸出是一個與輸入張量具有相同類型和形狀但值為零的張量。
從輸入圖像創(chuàng)建黑色圖像時,此功能可能會有所幫助。如果您希望直接定義表單,請使用 tf.zeros。如果您更喜歡初始化 1 而不是 0,請使用 tf.ones_like。
- tfpad
用常數(shù)值在其周圍添加指定的填充以增加張量的維度。
- tf.enable_eager_execution
這可以在您運行 TensorFlow 應(yīng)用程序時幫助您。使用 Eager Execution 時,您不需要在會話中構(gòu)建和運行圖。這是有關(guān)急切執(zhí)行的更多信息。
“Eager execution”必須是導(dǎo)入 TensorFlow 后的第一條語句。
TensorFlow 與 PyTorch
Torch 的 Python 實現(xiàn) Pytorch 得到 Facebook 的支持。它通過提供即時圖形編譯與上述技術(shù)競爭,通過不將圖形視為不同和不透明的對象,使 Pytorch 代碼與周圍的 Python 更加兼容。相反,有許多靈活的技術(shù)可以即時構(gòu)建張量計算。此外,它表現(xiàn)良好。它具有強大的多 GPU 能力,很像 Tensorflow;然而,Tensorflow 仍然適用于更大規(guī)模的分布式系統(tǒng)。雖然 Pytorch 的 API 文檔齊全,但 Tensorflow 或 Keras 的 API 更加完善。然而,Pytorch 在不影響性能的情況下在靈活性和可用性方面取得了勝利,這無疑迫使 Tensorflow 重新思考和調(diào)整。Tensorflow 最近受到 Pytorch 的嚴重挑戰(zhàn),
Keras
Keras 是一個開源軟件庫,為人工神經(jīng)網(wǎng)絡(luò)提供 Python 接口。由于 Keras 名義上是獨立于引擎的,所以理論上 Keras 代碼可以被重用,即使引擎需要因性能或其他因素而改變。它的缺點是,當(dāng)您希望創(chuàng)建非常新穎或?qū)I(yè)的架構(gòu)時,通常需要在 Keras 層下使用 Tensorflow 或 Theano。這主要發(fā)生在您需要使用復(fù)雜的 NumPy 索引時,這對應(yīng)于 Tensorflow 中的聚集/分散和 Theano 中的 set/inc 子張量。
Keras 函數(shù)
- 評估與預(yù)測
在 Keras 中,evaluate() 和 predict() 都可用。這些技術(shù)可以利用 NumPy 數(shù)據(jù)集。當(dāng)數(shù)據(jù)經(jīng)過測試后,我完成了對結(jié)果的評估。我使用這些技術(shù)來評估我們的模型。
- Keras 中的圖層
每個 Keras 層都包含許多技術(shù)。這些層有助于構(gòu)建、配置和訓(xùn)練數(shù)據(jù)。密集層有助于操作實現(xiàn)。我使用 flat 展平了輸入。Dropout 啟用輸入丟失。我可以使用重塑工具重塑輸出。我使用輸入啟動了一個 Keras 張量。
您可以獲得中間層的輸出。
一個相當(dāng)簡單的庫是 Keras。它使得從層的中間層獲取輸出成為可能。您可以輕松地向現(xiàn)有層添加一個新層,以幫助您在中間獲得輸出。
Theano
Theano 是一個 Python 庫和優(yōu)化編譯器,用于操作和評估數(shù)學(xué)表達式,尤其是矩陣值表達式。作為最古老和最成熟的,為 Theano 提供了優(yōu)勢和劣勢。大多數(shù)用戶請求的功能都已添加,因為它是舊版本。但是,其中一些實現(xiàn)有點過于復(fù)雜且難以使用,因為沒有先例可循。該文檔是可以通過但模棱兩可的。由于沒有簡單的方法來檢查中間計算,因此在 Theano 中讓復(fù)雜的項目正常運行可能非常具有挑戰(zhàn)性。他們通常使用調(diào)試器或通過查看計算圖來進行調(diào)試。
Theano 函數(shù)
- 聲明變量
我用 dscalar 方法聲明了一個十進制標量變量。當(dāng)下面的語句運行時,它會在您的程序代碼中添加一個名為 C 的變量。
- 定義 Theano 函數(shù)
該函數(shù)接受兩個參數(shù),第一個是輸入,第二個是函數(shù)的輸出。根據(jù)下面的聲明,第一個參數(shù)是一個包含 C 和 D 兩項的數(shù)組。結(jié)果是一個標量單位,指定為 E。
結(jié)論
我見過一個高技能的 Python 程序員迅速掌握新庫的精妙之處并了解如何使用它。但是,無論是初學(xué)者、中級還是專家,選擇一種編程語言還是在這種情況下選擇一個庫而不是另一個庫,很大程度上取決于您項目的目標和需求。