譯者| 劉濤
審校| 孫淑娟
人工智慧(AI)和機器學習(ML)是我們日常生活的伙伴,很難想像沒有演算法和統計模型會是怎樣一種生活。每當我們聽到機器學習這個字時,首先想到的就是 Python。因為Python長期以來一直是機器學習的代言人,它在幫助實現機器學習的技術層面上發揮了重要作用。
Python可能是最優美的機器學習語言,有48.24%的開發人員使用它。由於Python具有強大便利的低階套件和高級API接口,它在科學計算的所有領域中都具有無可比擬的優勢,但在用於特定任務時,它也有一些缺點。因此,對於Python替代語言的需求也越來越普遍。
目前,許多新興語言在表現上與Python相當,甚至比Python更好。所以它不再是機器學習的唯一選項。 Scala,Julia,MQL5以及其他非 Python超集的語言可以用來開發和提供機器學習應用。因此機器學習不再侷限於Python。
本文將探討新機器學習語言的出現,以及它們如何侵蝕Python市場佔有率以及未來機器學習的變化。
#讓我們來討論Python的一些缺點,這些缺點是開發者和資料科學家經常面對的。
Python開發速度很快,但是計算速度非常慢。它使用解釋器而非編譯器。由於執行順序代碼,它比其他的資料科學程式語言慢。 Python的速度比C慢,因為C有很多有用的工具和函式庫。除非你掌握了向量化程式碼,否則你會發現它是多麼的慢。
Cython是一個Python的超集,它將Python原始碼編譯成C語言程式碼,最關鍵是提供了C語言層級的運算速度,而無需額外的運算資源。很多程式設計師使用Cython編寫Python程式碼的運行速度和C語言的一樣快,但是更簡潔易讀。
Python在設計上有巨大的缺陷,這是由它的動態型別造成的。 通常程式語言中的動態類型變數不需要特別聲明。 Python使用的是鴨子型,這種類型讓人困惑。在鴨子型中,一個物件的類別或屬性沒有它的功能那麼重要。 鴨子型不需要類型檢查。 您也可以對進程或屬性進行驗證。
Python由於其龐大的結構而佔用了大量記憶體。此外,Python資料類型在記憶體消耗方面很靈活。它不適用於記憶體密集型任務。其靈活的資料類型也會導致記憶體消耗。因此,當您創建大型且長期運行的Python系統時,Python中的記憶體管理變得具有挑戰性。
與其他語言相比,Python線程效率更低。儘管Python是多執行緒處理任務,但每次只能執行一個執行緒。因此,多執行緒的 Python 提供了單執行緒的處理效率。 Python有一個全域解釋器鎖 (GIL),同一時間只允許一個執行緒使用。只有在Python使用原生函式庫的情況下,才能同時執行多執行緒。此外,Python的超集 Jython可以實作多線程,而Python則不行。
Python確實很棒。但它不可能同時既是閃電俠又是無敵浩克!有人可能需要閃電俠,有人可能需要綠巨人。用戶需求是多樣性的。同樣,Python也不是專為數學和數據科學應用而設計的。它需要一個像NumPy或Tensorflow這樣的第三方函式庫,專門用於深度學習演算法。因此,與Python相比,資料專用程式語言更具優勢。
例如,在商業領域,機器學習需要速度和可擴展性以減少執行時間。您不能讓顧客等太久。因此,您需要更快的ML語言(通用函數式程式語言)來執行。速度越快越好。
現在,Python已經很快了,但還有什麼能比Python更快的呢?有的,它是Julia,或是Scala!
在這種情況下,資料科學家更喜歡使用與Python不同的程式語言。
在各種應用程式環境中,有幾種Python替代方案的性能與Python相當或優於Python。以下是一些Python資料科學的替代方案:
Julia是一種全新的高階動態程式語言,具有創新性、快速性和舒適性。它是一種能夠編寫各種應用程式的通用語言。值得一提的是,其軟體包生態系統和功能有很大一部分都是針對高階數值計算的,非常適合機器學習。
Julia是基於多種語言構建,包括C語言和Python、R和MATLAB等高階動態類語言。 Julia汲取了這些語言的可選類型、語法和特性,因為Julia的目標是整合它們的優點並消除其缺點。
Julia的創造者希望開發出一種語言,可以像C語言一樣快速地處理科學計算、機器學習、資料探勘、大規模線性代數、分散式和平行計算。然而,他們最終開發出的語言速度更快。 儘管Python的速度越來越快,但Julia還是勝過了它。
Julia簡化了許多用於機器學習的數學符號。它提供諸如ArrayFire這樣的多樣化GPU程式包,它能讓GPU執行通用程式碼。每個套件都有自己獨特的程式模式,例如, NVIDIA有CUDA. Jl,AMD有AMDGPU. jl和oneAPI。
機器學習工程師可以在大型叢集中快速部署Julia,受益於其強大的工具,例如MLBase.jl、Flux.jl(深度學習)、MLJ.j(通用機器學習)和Knet.jl (深度學習)。 Flux是 一個高速的深度機器學習函式庫,它預先安裝了額外的工具,使Julia的能力達到了最大化。 同樣,也包括適用於 ML應用程式的ScikitLearn.jl、TensorFlow.jl和MXNet.jl。
Julia擅長解決複雜的計算問題。因此,包括史丹佛大學和東京都立大學在內的許多著名學府都開設了Julia課程。 它在與Python的比較中,表現也很穩固。
像Logan Kilpatrick這樣的眾多產業主管認為,Julia是機器學習和資料科學的未來。
Julia的主要特點:
Scala是一種高階程式語言,它同時支援物件導向和函數式程式設計技術。 Martin Odersky創建了它,並於2004年6月正式推出。 Scala在開發人員中越來越受歡迎,並且正在跨越當今的技術。
Scala是一種與Java應用程式和函式庫相容的Java虛擬機器 (JVM) 語言。因為它缺乏基本資料的概念,所以經常被認為是一種靜態語言。它的多範式、多核心架構很複雜。
ApacheSpark是一種強大、速度快的即時資料流和資料處理工具。 Scala Spark有助於複雜的映射、ETL和大型資料處理任務。 Scala允許使用者透過理解程式碼來實現新的Spark功能。 Scala與Java的兼容性使程式設計師能夠快速掌握物件導向的概念。
SparkMLlib包含了Spark中的高品質演算法和出色的效能,使其成為可擴展的機器學習函式庫。分類、迴歸、聚類、協同過濾和降維都包含在Spark的MLlib機器學習庫中。此外,Breeze、Spire、Saddle和Scalalab是其他一些有助於創建強大的資料處理應用程式的ML庫。
ApacheKafka是一種開源分散式事件流平台,隨著Python的流行,Spark也開始大行其道。 Scala Spark中執行緩慢的內容必然會在PySpark中崩潰。此外,您可以使用TensorFlow Scala庫為機器學習模型建立一個適應性強的高效能服務系統。
Scala的靜態類型有助於複雜的應用程式。它的JVM和JavaScript運行時使高效能係統能夠輕鬆存取庫。此外,它的性能優於Python。它也在與Python的比較中站穩了腳步。
Scala的主要特點
##Scala的一些核心功能可實現高效的資料科學計算:MQL5語言說明文件列出了函數、操作、保留字等。此外,它還提供了整數、布林值、文字、字串、日期和時間等資料類型。它有複雜的結構和類別。此外,此說明文件還包括交易策略、控制台、自訂視效和文件存取等的標準庫類定義。
此外,MQL5擁有超過1,500個用於新應用開發的原始碼庫。您可以使用包含大量數值分析函數的ALGLIB函式庫。同樣,還有用於處理時間序列的TimeSeries庫和用於開發模糊模型的Fuzzy庫以及其他各種庫。
MQL5是一種功能強大的程式語言,可以幫助您建立即時系統,提供視覺化的決策協助。 MQL5 支援枚舉、結構、類別和事件。透過增加主嵌入式函數的數量,MQL5程式可以與DLL進行通訊。
MQL5具有與C 類似的語法,可以輕鬆地將用不同的程式語言編寫的程式轉換成MQL5程式。因此,在使用數據分析、人工智慧或金融工具作為交易機器人時,您可以獲得與C 相同的效率。
MQL5的主要特點
MQL5的一些核心功能可實現高效率的資料科學計算:
程式語言好比駕駛賽車,適當的車是不可或缺的,駕駛就更不用說了。同樣,身為資料科學家,您正是這些獨特跑車的駕駛者。
每位資料科學家或開發人員對特定技術都有自己的要求和規格。最佳的技術選擇取決於您需要的視角和功能。因此,很難做出最終選擇。
如果您希望實現多進程的運算,而且要求非常高的運算速度,則可以選擇Julia。它是三者中最快的。另一方面,如果您正在做大型項目,Scala應該是更好的選擇,因為它能夠勝任。如果您對金融工具感興趣,MQL5則是最佳選擇。
同樣,每種程式設計語言都有自己特點和擅長領域。因此,選擇滿足您的要求和規範的語言才是最好的做法。
機器學習是持續的、不斷進化的過程。隨著時間的推移,它與標準化ML (SML) 語言一起出現,並在Python中流行起來。如今,具有不同需求的機器學習語言呈現多樣化的發展。
簡而言之,Python是一種非常出色的機器學習語言。但Python並不是一種資料科學專用語言,並且有一些更現代的程式語言可以比它更有效地執行特定任務。
因此,新興的程式語言正在機器學習領域中獲得了市場份額並不斷增長。希望在未來幾年內,它們也能夠普及流行起來。
原文連結:https://hackernoon.com/not-only-python-problems-errors-and-alternatives
譯者介紹
#劉濤,51CTO社群編輯,某大型央企系統上線偵測管控負責人,主要職責為嚴格審核系統上線驗收所做的漏掃、滲透測試以及基線檢查等多項檢測工作,擁有多年網路安全管理經驗,多年PHP及Web開發及防禦經驗,Linux使用及管理經驗,擁有豐富的程式碼稽核、網路安全測試及威脅挖掘經驗。精通Kali下SQL審計、SQLMAP自動化探測、XSS審計、Metasploit審計、CSRF審計、webshell審計、maltego審計等技術。
以上是為什麼急於尋找Python的替代者?的詳細內容。更多資訊請關注PHP中文網其他相關文章!