自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

為什么急于尋找Python的替代者?

譯文 精選
開發(fā) 前端
本文將探討新機器學習語言的出現(xiàn),以及它們?nèi)绾吻治gPython市場份額以及未來機器學習的變化。

?譯者 | 劉濤

審校 | 孫淑娟

人工智能(AI)和機器學習(ML)是我們?nèi)粘I畹幕锇?,很難想象沒有算法和統(tǒng)計模型會是怎樣一種生活。每當我們聽到機器學習這個詞時,首先想到的就是 Python。因為Python長期以來一直是機器學習的代言人,它在幫助實現(xiàn)機器學習的技術層面上發(fā)揮了重要作用。

Python可能是最優(yōu)美的機器學習語言,有48.24%的開發(fā)人員使用它。由于Python具有強大便利的低級包和高級API接口,它在科學計算的所有領域中都具有無可比擬的優(yōu)勢,但在用于特定任務時,它也有一些缺點。因此,對于Python替代語言的需求也越來越普遍。

目前,許多新興語言在性能上與Python相當,甚至比Python更好。所以它不再是機器學習的唯一選項。Scala,Julia,MQL5以及其他非 Python超集的語言可以用來開發(fā)和提供機器學習應用。因此機器學習不再局限于Python。

本文將探討新機器學習語言的出現(xiàn),以及它們?nèi)绾吻治gPython市場份額以及未來機器學習的變化。

1.Python的缺點 

讓我們來討論一下Python的一些缺點,這些缺點是開發(fā)者和數(shù)據(jù)科學家經(jīng)常面對的。

性能和速度

Python開發(fā)速度很快,但是計算速度非常慢。它使用解釋器而非編譯器。由于執(zhí)行順序代碼,它比其他的數(shù)據(jù)科學編程語言要慢。Python的速度比C慢,因為C有很多有用的工具和庫。除非你掌握了矢量化代碼,否則你會發(fā)現(xiàn)它是多么的慢。

Cython是一個Python的超集,它將Python源代碼編譯成C語言代碼,最關鍵是提供了C語言級的運算速度,而無需額外的運算資源。很多程序員使用Cython編寫Python代碼的運行速度和C語言的一樣快,但是更簡潔易讀。

設計局限

Python在設計方面存在著巨大的缺陷,這是由它的動態(tài)類型造成的。 通常編程語言中的動態(tài)類型變量不需要特別聲明。Python使用的是鴨子型,這種類型讓人困惑。在鴨子型中,一個對象的類或?qū)傩詻]有它的功能那么重要。 鴨子型不需要類型檢查。 您也可以對進程或?qū)傩赃M行驗證。

內(nèi)存消耗效率低

Python由于其龐大的結(jié)構而占用了大量內(nèi)存。此外,Python數(shù)據(jù)類型在內(nèi)存消耗方面很靈活。它不適用于內(nèi)存密集型任務。其靈活的數(shù)據(jù)類型也會導致內(nèi)存消耗。因此,當您創(chuàng)建大型且長期運行的Python系統(tǒng)時,Python中的內(nèi)存管理變得具有挑戰(zhàn)性。

線程不足

與其他語言相比,Python線程效率更低。盡管Python是多線程處理任務,但每次只能執(zhí)行一個線程。因此,多線程的 Python 提供了單線程的處理效率。Python有一個全局解釋器鎖 (GIL),同一時間只允許一個線程使用。只有在Python使用原生庫的情況下,才能同時運行多線程。此外,Python的超集 Jython可以實現(xiàn)多線程,而Python則不行。

2.為什么數(shù)據(jù)科學家要尋找Python替代者? 

Python確實很棒。但它不可能同時既是閃電俠又是無敵浩克!有人可能需要閃電俠,有人可能需要綠巨人。用戶需求是多樣性的。同樣,Python也不是專為數(shù)學和數(shù)據(jù)科學應用而設計的。它需要一個像NumPy或Tensorflow這樣的第三方庫,專門用于深度學習算法。因此,與Python相比,數(shù)據(jù)專用編程語言更具優(yōu)勢。

例如,在商業(yè)領域,機器學習需要速度和可擴展性以減少執(zhí)行時間。您不能讓顧客等太久。因此,您需要更快的ML語言(通用函數(shù)式編程語言)來執(zhí)行。速度越快越好。

現(xiàn)在,Python已經(jīng)很快了,但還有什么能比Python更快的呢?有的,它是Julia,或是Scala!

在這種情況下,數(shù)據(jù)科學家更喜歡使用與Python不同的編程語言。

3.數(shù)據(jù)科學的Python替代方案 

在各種應用程序環(huán)境中,有幾種Python替代方案的性能與Python相當或優(yōu)于Python。以下是一些Python數(shù)據(jù)科學的替代方案:

(1)Julia

Julia是一種全新的高級動態(tài)編程語言,具有創(chuàng)新性、快速性和舒適性。它是一種能夠編寫各種應用程序的通用語言。值得一提的是,其軟件包生態(tài)系統(tǒng)和功能有很大一部分都是面向高級數(shù)值計算的,非常適合機器學習。

Julia基于多種語言構建,包括C語言和Python、R和MATLAB等高級動態(tài)類語言。Julia汲取了這些語言的可選類型、語法和特性,因為Julia的目標是整合它們的優(yōu)點并消除其缺點。

圖片

Julia的創(chuàng)造者希望開發(fā)出一種語言,可以像C語言一樣快速地處理科學計算、機器學習、數(shù)據(jù)挖掘、大規(guī)模線性代數(shù)、分布式和并行計算。然而,他們最終開發(fā)出的語言速度更快。 盡管Python的速度越來越快,但Julia還是勝過了它。

Julia簡化了許多用于機器學習的數(shù)學符號。它提供諸如ArrayFire這樣的多樣化GPU編程包,它能使GPU執(zhí)行通用代碼。每個包都有自己獨特的編程模式,比如, 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擅長解決復雜的計算問題。因此,包括斯坦福大學和東京都立大學在內(nèi)的眾多著名學府都開設了Julia課程。 它在與Python的比較中,性能也很穩(wěn)固。

(2)Scala

像Logan Kilpatrick這樣的眾多行業(yè)高管認為,Julia是機器學習和數(shù)據(jù)科學的未來。

Julia的主要特點:

  • Julia的一些核心功能可實現(xiàn)高效的數(shù)據(jù)科學計算:
  • Julia的運算速度很快。它比Python快2-20倍;
  • 靈活豐富的庫功能;
  • 內(nèi)置包管理器;
  • PyCall和CCall 包直接調(diào)用Python;
  • 使用類似shell的功能管理其他進程;
  • 為并行和分布式計算而開發(fā);
  • 自動為各種參數(shù)類型生成高效代碼;
  • 具有MIT許可證的免費和開源軟件。

Scala是一種高級編程語言,它同時支持面向?qū)ο蠛秃瘮?shù)式編程技術。Martin Odersky創(chuàng)建了它,并于2004年6月正式推出。Scala在開發(fā)人員中越來越受歡迎,并且正在跨越當今的技術。

Scala是一種與Java應用程序和庫兼容的Java虛擬機 (JVM) 語言。 因為它缺乏基本數(shù)據(jù)的概念,所以經(jīng)常被認為是一種靜態(tài)語言。 它的多范式、多核架構很復雜。

ApacheSpark是一種功能強大、速度快的實時數(shù)據(jù)流和數(shù)據(jù)處理工具。Scala Spark有助于復雜的映射、ETL和大型數(shù)據(jù)處理任務。Scala允許用戶通過理解代碼來實現(xiàn)新的Spark功能。Scala與Java的兼容性使程序員能夠快速掌握面向?qū)ο蟮母拍睢?/p>

SparkMLlib包含了Spark中的高質(zhì)量算法和出色的性能,使其成為可擴展的機器學習庫。分類、回歸、聚類、協(xié)同過濾和降維都包含在Spark的MLlib機器學習庫中。此外,Breeze、Spire、Saddle和Scalalab是其他一些有助于創(chuàng)建強大的數(shù)據(jù)處理應用程序的ML庫。

ApacheKafka是一種開源分布式事件流平臺,隨著Python的流行,Spark也開始大行其道。Scala Spark中執(zhí)行緩慢的內(nèi)容必然會在PySpark中崩潰。此外,您可以使用TensorFlow Scala庫為機器學習模型創(chuàng)建一個適應性強的高性能服務系統(tǒng)。

Scala的靜態(tài)類型有助于復雜的應用程序。它的JVM和JavaScript運行時使高性能系統(tǒng)能夠輕松訪問庫。此外,它的性能優(yōu)于Python。 它也在與Python的比較中站穩(wěn)了腳跟。

Scala的主要特點

Scala的一些核心功能可實現(xiàn)高效的數(shù)據(jù)科學計算:

  • Scala的速度比Python快10倍;
  • 具備高級類型推斷機制;
  • 樣例類(case class)和模式匹配;
  • 擁有簡潔但易讀的表達性語法;
  • 提供高階函數(shù);
  • 使用Singleton對象而不是靜態(tài)變量;
  • 使用OOP、FP或混合風格的代碼;
  • Scala源代碼編譯為“. class”文件,該文件在JVM上執(zhí)行。

(3)MQL5

MQL5是一種提供高級數(shù)據(jù)分析及機器學習功能的高級面向?qū)ο缶幊陶Z言。它基于廣泛使用和廣為人知的編程語言C++之上,并以速度快、通用性強著稱。

MQL5不是像Python、Julia或Scala那樣的日常ML語言。 它專門為金融市場創(chuàng)造,用于監(jiān)控金融工具。該語言的核心與其他語言相似,但具有獨特的功能。MQL5支持整數(shù)、布爾值、文字、字符串、日期、時間和枚舉。它把結(jié)構和類都定義為復雜數(shù)據(jù)類型。

MQL5語言說明文檔列出了函數(shù)、操作、保留字等。此外,它還提供了整數(shù)、布爾值、文字、字符串、日期和時間等數(shù)據(jù)類型。它有復雜的結(jié)構和類。 此外,該說明文檔還包括交易策略、控制面板、自定義視效和文件訪問等的標準庫類定義。

此外,MQL5擁有超過1,500個用于新應用開發(fā)的源代碼庫。 您可以使用包含大量數(shù)值分析函數(shù)的ALGLIB庫。同樣,還有用于處理時間序列的TimeSeries庫和用于開發(fā)模糊模型的Fuzzy庫以及其他各種庫。

MQL5是一種功能強大的編程語言,可以幫助您構建實時系統(tǒng),提供可視化的決策幫助。MQL5 支持枚舉、結(jié)構、類和事件。通過增加主嵌入式函數(shù)的數(shù)量,MQL5程序可以與DLL進行通信。

MQL5具有與C++類似的語法,可以很容易地把用不同的編程語言編寫的程序轉(zhuǎn)換成MQL5程序。因此,在使用數(shù)據(jù)分析、人工智能或金融工具作為交易機器人時,您可以獲得與C++相同的效率。

MQL5的主要特點

MQL5的一些核心功能可實現(xiàn)高效的數(shù)據(jù)科學計算:

  • MQL5是以C++為基礎的。因此,其速度與C++相當,且超過Python;
  • 專為金融市場的工具和分析而創(chuàng)建;
  • 完全事件驅(qū)動;
  • 1500多個源代碼庫;
  • 可預定義標準常量和枚舉。服務架構存儲信息;
  • 更改配色方案、創(chuàng)建控制面板、添加自定義交易品種以及從MQL5程序?qū)С鰞r格圖表;
  • 12種新的繪圖樣式,512個緩沖區(qū),以及從過去到未來的直接索引值計算;
  • 在圖表和多幣種測試器中調(diào)試外匯智能交易系統(tǒng)(Expert Advisor)

4.您應該選擇哪種Python ML替代方案?  

編程語言好比駕駛賽車,一部合適的汽車是必不可少的,司機就更不用說了。同樣,作為一名數(shù)據(jù)科學家,您正是這些獨特跑車的駕駛員。

每位數(shù)據(jù)科學家或開發(fā)人員對特定技術都有自己的要求和規(guī)范。最佳的技術選擇取決于您需要的視角和功能。因此,很難做出最終選擇。

如果您希望實現(xiàn)多進程的運算,而且要求非常高的運算速度,則可以選擇Julia。 它是三者中最快的。另一方面,如果您正在做大型項目,Scala應該是更好的選擇,因為它能夠勝任。如果您對金融工具感興趣,MQL5則是最佳選擇。

同樣,每一種程序設計語言都有自己特點和擅長領域。因此,選擇滿足您的要求和規(guī)范的語言才是最好的做法。

5.總結(jié)  

機器學習是一個持續(xù)的、不斷進化的過程。隨著時間的推移,它與標準化ML (SML) 語言一起出現(xiàn),并在Python中流行起來。如今,具有不同需求的機器學習語言呈現(xiàn)多樣化的發(fā)展。

簡而言之,Python是一種非常出色的機器學習語言。但Python并不是一種數(shù)據(jù)科學專用語言,并且有一些更加現(xiàn)代的編程語言可以比它更有效地執(zhí)行特定任務。

因此,新興的編程語言正在機器學習領域中獲得了市場份額并不斷增長。希望在未來幾年內(nèi),它們也能夠普及流行起來。

原文鏈接:https://hackernoon.com/not-only-python-problems-errors-and-alternatives

譯者介紹

劉濤,51CTO社區(qū)編輯,某大型央企系統(tǒng)上線檢測管控負責人,主要職責為嚴格審核系統(tǒng)上線驗收所做的漏掃、滲透測試以及基線檢查等多項檢測工作,擁有多年網(wǎng)絡安全管理經(jīng)驗,多年PHP及Web開發(fā)和防御經(jīng)驗,Linux使用及管理經(jīng)驗,擁有豐富的代碼審計、網(wǎng)絡安全測試和威脅挖掘經(jīng)驗。精通Kali下SQL審計、SQLMAP自動化探測、XSS審計、Metasploit審計、CSRF審計、webshell審計、maltego審計等技術。

責任編輯:武曉燕 來源: 51CTO技術棧
相關推薦

2011-12-02 09:53:34

2023-01-18 10:44:15

RedpandaKafkaAPI

2009-08-21 09:34:59

XML-PRCEasyrest

2009-05-26 10:40:17

九城魔獸王者世界

2015-07-16 15:30:34

分布式計算PS云計算

2010-05-19 08:28:57

Traffic SerApache

2014-10-22 14:04:50

傲游瀏覽器

2016-01-04 11:12:56

LiFiWi-Fi

2009-05-14 09:20:41

關系數(shù)據(jù)庫對象關系映射Terracotta

2015-12-01 16:02:19

WiFiLiFi

2019-04-04 14:33:19

云計算云端企業(yè)

2009-12-29 17:40:33

2009-03-27 18:01:00

LinuxNovell SLEDWindows

2010-05-11 10:03:55

ApacheLighttpdNginx

2014-05-23 18:05:19

2009-05-04 18:19:43

編程語言排行榜D語言

2015-11-26 15:04:09

5G中國移動

2014-07-26 15:22:31

趙修湘關系型數(shù)據(jù)庫Hive數(shù)據(jù)倉庫

2018-01-02 05:08:43

互聯(lián)網(wǎng)人工智能5G

2011-01-12 11:07:54

微軟服務器
點贊
收藏

51CTO技術棧公眾號