中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

數(shù)據(jù)科學大Battle,你站Python還是R

2018-07-04    來源:raincent

容器云強勢上線!快速搭建集群,上萬Linux鏡像隨意使用

Python 或 R,這是一個問題。在數(shù)據(jù)科學工作中,你可能也經(jīng)常遇到這個選擇困難問題。本文作者Brian Ray基于數(shù)十年的Python和R在數(shù)據(jù)科學領域的使用檢驗,分享了自己的看法,希望能夠幫大家做出更好的選擇。

希望這篇文章能幫助那些在數(shù)據(jù)科學中糾結(jié)于選擇Python還是R的小伙伴們。如果你是數(shù)據(jù)科學領域的新手,或者你需要在項目中選擇一個語言來用,這篇文章一定能幫到你。

也許存在第三種選項

 

 

Hadley Wickham,RStudio的首席數(shù)據(jù)科學家,已經(jīng)給出了回答:與其說選擇其中一種語言(R“還是”Python)更好,還不如說讓兩種語言相互合作 (R“和”Python)是最佳的選擇。所以,我所說的第三種選項就是同時使用Python和R。這讓我很感興趣,我也將在本文末尾處詳細闡述。

Hadley Wickham推特:

https://twitter.com/hadleywickham

如何比較R和Python

以下不是兩種語言的詳細對比清單,只是一些值得進行對比的要素:

• 歷史:R和Python有著差異明顯又相互交錯的歷史。

• 使用群體:實地調(diào)查顯示了許多復雜的社會學和人類學因素。

• 性能:詳細的性能比較,以及為什么很難比較兩種語言的原因。

• 第三方支持:模塊、代碼庫、可視化工具、組織及開發(fā)環(huán)境。

• 用例:某些類型的工作或任務中,更適用于使用兩種語言中的一種。

• 同時使用兩種語言:在Python中使用R,在R中使用Python。

• R與Python預測能力的比較:介紹一個“自給自足”的練習。

• 企業(yè)和個人偏好:揭曉最終答案

歷史

 

 

簡史:

ABC語言 ->Python問世(1989年由Guido van Rossum創(chuàng)立)-> Python 2 (2000年) -> Python 3 (2008年)

Fortan語言->S語言(貝爾實驗室)->R語言問世(1991年由Ross Ihaka 和 Robert Gentleman創(chuàng)立)R 1.0.0 (2000年) -> R 3.0.2 (2013年)

使用群體

比較Python與R的用戶時,要謹記以下圖表:

 

 

只有50%的Python用戶同時使用R

上述結(jié)果假設所有的R程序員都用R來做“科學與數(shù)據(jù)研究”,無論程序員水平如何,我們能夠確定以上統(tǒng)計分布是真實的。

想進一步了解Python的“熱潮”,可以閱讀我的文章,里面有關于Python熱潮的調(diào)查結(jié)果。

文章鏈接:

https://www.linkedin.com/pulse/python-hype-survey-results-experience-any-drastic-decline-brian-ray/

如果我們僅從“科學與數(shù)據(jù)研究”群體來看,這就引出了我們的第二個觀點,即R/Python究竟適用于哪些群體?整個“科學與數(shù)據(jù)研究”群體存在著很多子群體,雖然這些子群體存在交叉,你可能會疑惑他們在更廣的大群體中是如何交互并有著不同的表現(xiàn)的。

以下是Python/R適用的一些子群體:

• 深度學習

• 機器學習

• 高級分析

• 預測分析

• 統(tǒng)計學

• 探索性數(shù)據(jù)分析學術研究

• 近乎所有的計算研究領域

雖然每個專業(yè)領域似乎都服務于特定的群體,但你會發(fā)現(xiàn)R在統(tǒng)計學和數(shù)據(jù)探索領域使用更廣泛。不久之前,比起使用Python進行數(shù)據(jù)探索,啟動并運行R能花費較少的時間,況且你還需要花時間安裝Python。

所有一切都將被Jupyter Notebooks 和Anaconda技術顛覆。

注意:Jupyter Notebooks增加了在瀏覽器中編寫Python/R的功能;Anaconda可以輕松安裝并管理Python和R及其語言包。

現(xiàn)在你可以在友好的環(huán)境中編程,并用創(chuàng)造性的方式來生成報表和完成數(shù)據(jù)分析。程序員與他們鐘愛的編程語言之間已不存在屏障,F(xiàn)在,Python能夠在一個平臺獨立運行,并且提供前所未有的快速、簡潔的分析功能。

影響人們選擇編程語言的另一個區(qū)別在于“開源”,不僅僅在于開源庫,還包括協(xié)作群體對于開源的貢獻。諷刺的是,像Tensorflow和GNU科學計算庫(分別隸屬于Apache和GPL)這類開源許可軟件,似乎同時綁定Python和R。

盡管還存在不少R的支持者,但Python使用群體中更多人是Python的純粹支持者。另一方面,似乎有更多的企業(yè)支持R,尤其是那些曾經(jīng)廣泛使用統(tǒng)計學來做分析的企業(yè)。

最后,關于群體和協(xié)作,在Github中Python的支持者更多。在最新的Python語言包中,像Tensorflow這樣的包擁有超過3.5萬顆星的用戶收藏。相反,再看一下最新的R語言包,像Shiny和Stan,都只有少于2千顆星的用戶收藏。

性能

Python和R的比較一直都不太容易,因為有太多指標和情況需要測試。在任何一個特定的硬件環(huán)境上測試都很困難。有些操作分析在一種語言上已經(jīng)進行了優(yōu)化,但在另一種語言上卻沒有。但無論如何,我們還是要進行這項比較。

非常簡單的循環(huán)語句比較

開始之前,我們先思考一下在使用層面Python和R的區(qū)別。你真的想要用R寫很多循環(huán)嗎?我覺得不同的語言在被開發(fā)時的意圖上應該是各不相同的。

 

運行結(jié)果:36.9 µs ± 5.99 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

 

在程序的合理性檢驗中,加載時間以及在命令行上的總運行時間:R語言是0m0.238s,Python是0m0.147s。再次強調(diào),這并不是一個嚴謹?shù)目茖W測試。

但這個簡單的測試表明,Python的速度明顯更快。雖然在大多數(shù)情況下,這并不是十分重要。

一種語言的速度快慢對于一個數(shù)據(jù)科學家而言的意義在哪里呢?這兩種語言的興起是因為它們可以被當作“命令語言”來使用。例如,我們使用Python工作時,對Pandas語言包的依賴性很大。這就引出了兩種語言模塊和庫上更深層次的比較,事實上,這也是一個更具意義的比較。

第三方支持

Python擁有PyPI,而R使用CRAN,并且它們都可以使用Anaconda。

CRAN使用其內(nèi)置的“install.packages”命令進行使用。截止撰寫本文時止,CRAN上大約有1.2萬個包可以使用。其中有超過二分之一(大約6千多個)甚至更多的包跟數(shù)據(jù)科學相關。

PyPi擁有10倍于R的包數(shù)量,14.1萬個包。其中有3700個包被標記為用于特定的科學工程領域。還有很多包雖然沒被標記但的確也用于科學應用。

在這兩種語言中,似乎都沒有太多完全重復的包。當我在PyPi中搜索“Random Forest”時,我們得到了170個項目,但是都不盡相同。

盡管Python的軟件包數(shù)量是R的10倍,但數(shù)據(jù)科學相關的軟件包的數(shù)量大致相同。

第三方工具包的可用性是非常重要的。為了用指定的開發(fā)語言而不得不從頭開始寫程序很令人沮喪。但與此同時,如果你確實需要這樣做,我希望你能將你的成果貢獻給開源社區(qū)。

特定任務下執(zhí)行速度的比較

DataFrames與Pandas的比較可能更有意義。

我們進行了一項實驗,在同一環(huán)境下比較它們針對復雜分析任務時,每一個步驟的執(zhí)行時間,結(jié)果如下。

 

 

 

 

大多數(shù)任務下Python比R更快

來源鏈接:

http://nbviewer.jupyter.org/gist/brianray/4ce15234e6ac2975b335c8d90a4b6882

實驗源碼:

http://nbviewer.jupyter.org/gist/brianray/4ce15234e6ac2975b335c8d90a4b6882

如我們看到的,Python+Pandas比R中原生的DataFrames要快的多。請注意,這并不意味著Python運行的更快。Pandas庫是在Numpy的基礎上用C語言編譯的.

數(shù)據(jù)可視化的比較

 

 

我真正想表現(xiàn)的是ggplot2和matplotlib的比較。

Matplotlib是一只800磅的大猩猩,雖然學習起來不是那么容易,但是支持自定義并且非常容易擴展。而基于ggplot的自定義不是那么簡單,甚至有些時候會非常難。

如果你喜歡漂亮的圖表,并且不怎么需要自定義,R是個好選擇。如果你需要更多的功能,那么Matplotlib甚至其他交互式的制圖工具會對你更有幫助。R中的ShinnyR也可以為你提供這種交互性制圖。

我們只能二選一?

肯定有人會說,為什么不能同時使用呢?

在如下一些情況下,你可以兩個同時使用:

• 你的小組或公司允許你這么干

• 你可以在你的編程環(huán)境中輕松安裝和維護

• 你的代碼不需要進入另一個系統(tǒng)

• 這不會讓別人與你合作時感到困惑。

兩種語言同時使用的一些方法:

• Python為R提供的開發(fā)包比如:rpy2、pyRserve、Rpython等等

• R也有相對應的包:rPython、PythonInR、reticulate、rJython、SnakeCharmR、XRPython。

使用Jupyter,同時使用,示例如下:

reticulate地址:

https://blog.rstudio.com/2018/03/26/reticulate-r-interface-to-python/

 

 

然后我們就可以直接傳遞Pandas的DataFrames,rpy2會自動將其轉(zhuǎn)換為R的DataFrames,并通過“-i df”進行切換。

 

 

來源鏈接:

http://nbviewer.jupyter.org/gist/brianray/734bd54f468d9a6db9171b2cfc98405a

源碼地址:

http://nbviewer.jupyter.org/gist/brianray/734bd54f468d9a6db9171b2cfc98405a

預測R和Python的未來

有人在Kaggle的Kernel平臺上發(fā)表了關于“預測開發(fā)者們用R還是Python”的分析,他基于已有數(shù)據(jù)提出了一些有意思的看法。

 

 

• 如果你打算來年向Linux靠攏,那么你更可能是Python用戶

• 如果你學習統(tǒng)計學,你更可能用R;如果學計算機科學,那么更可能用Python

• 如果你還年輕(18-24歲),你更可能是Python用戶

• 如果你參加代碼競賽,你更可能是Python用戶

• 如果你來年想使用android,你更可能是一個Python用戶

• 如果你來年想學習SQL,你更可能是R用戶

• 如果你使用MS Office,你更可能是R用戶

• 如果你來年想要Rasperry Pi,你更可能是一個Python用戶

• 如果你是全職學生,你更有可能成為Python用戶

• 如果您使用敏捷方法(Agile methodology),您更可能成為Python用戶

• 如果你對Ai的擔心大于期待,那么你更有可能成為R用戶

企業(yè)和個人偏好

當我與Google員工 、Stack Overflow 的領導人物Alex Martelli進行交流時,他向我解釋了google為什么最開始只官方支持少數(shù)幾種開發(fā)語言。即使在像google這樣自由創(chuàng)新的環(huán)境下,似乎也有一些限制。這就是企業(yè)的一些選擇偏好。

除了企業(yè)偏好外,組織中第一個使用某種語言的人也可能是決定企業(yè)偏好的關鍵人物。比如在Deloitte第一個使用R的人,他仍然在公司工作,并且現(xiàn)在成為了首席數(shù)據(jù)科學家。我認為,不管用什么語言,關鍵是追求并熱愛你的項目并努力成為最好的那一個。

雖然我不是首次嘗試這些工具的智者,但在此我還是要鄭重聲明,如果你正在研究一些重要的項目,那么在項目中去比較兩種語言的差距是不可取的。

當然,雖然錯誤在所難免,但每一個精心規(guī)劃的項目都應該為數(shù)據(jù)科學家預留一部分空間,讓他們學習和實驗。保持開放的態(tài)度,并擁抱多元化。

最后,從個人角度來說,我將主要使用Python。同時不管未來是和Python一起使用還是獨立使用R,我都期待學習更多的R知識。

相關報道:

https://blog.usejournal.com/python-vs-and-r-for-data-science-833b48ccc91d

標簽: b2c Google linux 代碼 開發(fā)者 數(shù)據(jù)分析 搜索

版權申明:本站文章部分自網(wǎng)絡,如有侵權,請聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點!
本站所提供的圖片等素材,版權歸原作者所有,如需使用,請與原作者聯(lián)系。

上一篇:數(shù)據(jù)科學正從這七個方向顛覆金融界

下一篇:如何選擇合適的時機對數(shù)據(jù)中心進行遷移?