身為資料科學家,R、Python 與Julia 該怎麼選? - 知勢
文章推薦指數: 80 %
Julia 是一種動態程式語言,最初是為了滿足高效能的數值分析和科學計算而設計的。
為了達到效能的需求, Julia 具備即時編譯的效能。
換句話說,Julia 集結 ...
人工智慧發展如日中天,如何和電腦對話逐漸成為現代人必備的技能之一。
然而,程式語言百百種,如何選擇自己適合的工具就很重要。
這篇文章以一個資料科學家的觀點出發,分析當前熱門的三種程式語言,希望對讀者有所裨益。
在「資料分析工具那麼多,該怎麼選?🛠️」這一篇文章中,有稍微提及了資料科學的工具鏈與生態。
「做資料分析一定要寫程式嗎?」是許多分析人會面臨的抉擇與問題,程式的入門是相對比較高的門檻。
但隨著資料科學的演進,許多商業軟體都逐漸成熟。
從完整的套裝軟體到實現彈性比較強的程式來說,大概可以把常見的資料分析工具分成幾種類型:①BI工具②分析模型套裝軟體③程式語言①BI工具和②分析模型套裝軟體可以讓分析者花費較少的精力的程式的負擔上,對於非工程背景的人來說門檻比較低,更能夠專注在分析上。
不過相對來說,就會受限於工具的能力,不同工具可以提供的功能不完全相同。
運用③程式語言作為分析的工具,主要可以有更彈性的支援。
資料科學當中的程式語言「程式語言」是分析者的工具中擁有比較大的彈性與使用門檻的手段,想要怎樣的資料操作流程或模型方法都可以自己實現。
通常會有兩種情況是只有程式才能達到的:客製化的資料處理過程,例如資料很特別、或是數量很大使用最新或冷門的模型,套裝軟體沒有提供當然使用程式語言也不是要從零開始寫程式,現在也有很多第三方的工具可以讓分析更有效率也更方便。
不同的程式語言對於資料分析的支援程式也不同,以目前主要用於資料分析的程式語言主要有三個:基於統計學的R語言程式架構與分析生態完整的Python集結Python、R和C++一體的Julia基於統計學的R語言R語言一開始的設計就是基於「數學」,主要用於統計分析、資料分析的目的。
根據官網的介紹,R是一種用於統計運算與畫圖的語言與環境。
R當中提供了非常多種統計相關的方法,例如線性與分線性的模型、假設檢定、時間序列或是分類/分群等等。
另一個優勢是提供了高質量的圖表,也包含了數學符號和公式(蠻多論文都可以一眼看出R風格的圖表)。
開發R語言的創始者分別是紐西蘭奧克蘭的兩位統計學家RossIhaka和RobertGentleman,現在是由「R語言開發核心團隊」以開源的方式進行協作。
值得一提的是,R是S語言的一個GNU開源專案,跟S語言有高度的相容性。
S語言是統計研究當中的工具,而R則提供開源的方式提供開發。
R的特定是他以函數型編程(FunctionalProgramming)與統計分析作為設計理念,在程式當中的基本型態是以向量(Vector)和矩陣(Matrix)的概念為最小單位,是一種高度數學化的特性。
https://rlads2019.github.io/lecture/04/index.html#1另外介紹兩個重要的開發夥伴:RStudio和CRAN。
RStudio作為R最主要的編譯開發環境(IDE),CRAN(ComprehensiveRArchiveNetwork)是R當中的套件管理平台,收錄/維護了官方與第三方的套件提供下載。
程式架構與分析生態完整的PythonPython是一個作為各種開發使用的程式語言,直譯與強型別的程式語言。
Python支援多種開發的混合模型,包含物件導向(OOP)與函數式編程(FP)。
Python也可以作為Script語言使用,是一種膠水語言。
Python的設計哲學強調簡潔的語法,規定使用空格縮排的特性讓程式碼有較高的可讀與一致性。
網路上也流傳一句經典的話:「人生苦短,我用Python」來描述的Python的精妙之處。
Python的初始開發者是GuidovanRossum,第一版在1991年發布。
據說GuidovanRossum當時是「為了打發時間而開發Python」。
他在開發完Python之後先後在Google及Dropbox工作,前幾年短暫退休後覺得太無聊近期又加入了MicroSoft。
Python僅僅作為一個程式的話,是難以扛起資料分析當中的數學底子。
那為什麼Python會在數據分析當中扮演一席之地呢?原因是Python的另外一個優點是擁有強大的開源生態,在Python當中的套件幾乎無奇不有,絕大部分的資訊工作都可以看到Python的身影。
在資料分析當中有Numpy和Pandas打下了Python在數學與資料的重要元件之後,也奠定了Python的地位-具有程式架構與數據分析的整合。
除此之外也陸續發展出各種套件:Python的資料分析生態系資料收集:Request、beatifulsoup、Scrapy資料前處理與科學計算:NumPy、SciPy、Pandas資料視覺化:Matplotlib、Seaborn、Bokeh、Plotly模型訓練:Statsmodels、SciKit-Learn、xgboost深度學習:TensorFlow、Pytorch、Keras自然語言與文本資料處理:NLTK、Gensim集結Python、R和C++一體的JuliaJulia是一種動態程式語言,最初是為了滿足高效能的數值分析和科學計算而設計的。
為了達到效能的需求,Julia具備即時編譯的效能。
換句話說,Julia集結Python的簡潔、R的數學特性與C++的效能於一體。
而在資料分析方面,Julia也支援許多科學分析套件與機器學習的套件,例如醫療、AR擴增實境、基因組學及風險管理等領域。
原始的三位設計者分別是JeffBezanson、StefanKarpinski以及ViralB.Shah與AlanEdelman教授指導,最早是從MIT的JuliaLab所發展。
Julia語言是全球熱度上升最快的程式語言之一,2012年正式公開此計畫,也在2018由MIT實驗室正式發布了Julia1.0。
Julia官網身為分析工作者,應該如何選擇呢?從最新一期TIOBE的程式語言排行來看,Python跟R都持續的在熱門的名單當中。
去年Python超過C++達到了第三名,而後續幾個月也持續上升。
值得觀察的是Java在的百分比持續往下(五月時第一名的被C取代),而穩定上升的Python也持續逼近Java。
R語言也在七月的時候,因為武漢肺炎疫苗研發需求而網上,達到Tiobe排名新高第八名,目前也維持在前十名內。
Julia從2016首次進入前五十名的行列之後持續的往前,今年從去年的三十名進入的第二十六的位置。
TIOBE另外一個我們來看StackOverflowTrends,不管放在一起比較討論量:或是分開看趨勢:基本上你會發現這個Python網上趨勢還是蠻明顯的而Julia的討論還是相對有限。
R、Python與Julia號稱是資料科學的三大程式語言,而他們也有各自的優缺點與一席之地。
R有著原生統計特性的優勢、對於各種數值運算與分析模型可以完美的結合,而Python加上適合的套件提供一個強大完善的數據分析程式生態系。
近期由MIT所引領的Julia更號稱是結合Python、C++、R於一體的新程式語言,搭著資料分析新女神的名號橫空出世。
那麼在2020這個時間點,想踏入資料分析領域的我們究竟該如何選擇呢?就我自己的觀點來看:目前看起來Python是首選、有些比較專業的統計方法可以考慮R,至於Julia還要觀望一下。
原文刊登於:資料科學家的工作日常
張維元
ALPHACamp資料工程師
擅長網站開發與資料科學的雙棲工程師,熟悉的語言是Python跟JavaScript。
同時也是程式社群JSDC核心成員及資料科學家的12堂心法課計畫發起人。
擁有多次國內大型技術會議講者經驗及獎項,持續在不同的平台發表對#資料科學、#網頁開發或#軟體職涯相關的分享。
延伸文章資訊
- 1身為資料科學家,R、Python 與Julia 該怎麼選? - 知勢
Julia 是一種動態程式語言,最初是為了滿足高效能的數值分析和科學計算而設計的。為了達到效能的需求, Julia 具備即時編譯的效能。換句話說,Julia 集結 ...
- 2Julia程式設計: 新世代資料科學與數值運算語言| 誠品線上
Julia 就是一個藉由語言設計及編譯器技術上取得成功的最佳典範。 Julia 語言的初衷是為了科學運算,但是他的適用範圍不僅僅是科學運算,從資料處理到經濟學模型,從 ...
- 3Julia 程式設計:新世代資料科學與數值運算語言 - 博客來
Julia語言,作為⼀一個新興語⾔言,同時兼有效能以及開發彈性,吸取了各家語言的優點,並且在語⾔及編譯器技術上的設計,讓Julia成為了兼有效能及彈性的優美語言。Julia ...
- 4Julia (程式語言) - 維基百科,自由的百科全書
Julia是一種進階通用動態程式語言,它最初是為了滿足高效能數值分析和計算科學的需要而設計的,不需要直譯器,速度快,也可用於客戶端和伺服器的Web用途、低階系統程式 ...
- 5Julia[程式語言] - 中文百科知識
Julia 是一個面向科學計算的高性能動態高級程式設計語言。其語法與其他科學計算語言相似。在許多情況下擁有能與編譯型語言相媲美的性能。Julia 是個靈活的動態語言, ...