身為資料科學家,R、Python 與Julia 該怎麼選? - 知勢

文章推薦指數: 80 %
投票人數:10人

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堂心法課計畫發起人。

擁有多次國內大型技術會議講者經驗及獎項,持續在不同的平台發表對#資料科學、#網頁開發或#軟體職涯相關的分享。



請為這篇文章評分?