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

數(shù)據(jù)科學(xué)領(lǐng)域,你該選 Python 還是 R ?

2018-07-26    來源:raincent

容器云強(qiáng)勢(shì)上線!快速搭建集群,上萬Linux鏡像隨意使用

 

根據(jù)需求,為了那些希望知道在數(shù)據(jù)科學(xué)方面選擇 Python 還是 R 編程語言的人,我發(fā)布了這篇指導(dǎo)文章。你可能在數(shù)據(jù)科學(xué)方面是個(gè)新手,或者你需要在一個(gè)項(xiàng)目中選出一個(gè)語言,這篇文章可能會(huì)幫助到你。

非免責(zé)聲明:在最大的數(shù)據(jù)科學(xué)家雇主之一(Deloitte)中,我是一個(gè)數(shù)據(jù)科學(xué)家的管理者。我也對(duì) R 和 Python 有幾十年的了解。我是個(gè)語言不可知論者,但是參與到 Python 社區(qū)已經(jīng)有15年左右了。

還會(huì)有第三種選擇

 

 

Hadley Wickham, RStudio 的首席數(shù)據(jù)科學(xué)家,已經(jīng)給出了答復(fù)“使用‘and’替代‘vs’”。由此,同時(shí)使用Python/R 是我將提到的第三種選擇。這個(gè)選項(xiàng)引起了我的好奇心,而且我會(huì)在本文末尾介紹這一點(diǎn)。

如何比較 R 和 Python

下面是這兩種語言之間一些值得比較的因素,這并不是一個(gè)完全的列表。

• 歷史:R 和 Python 具有明顯不同的歷史,有時(shí)候會(huì)交叉。

• 社區(qū):通過實(shí)際調(diào)查發(fā)現(xiàn)的很多復(fù)雜的社會(huì)人類學(xué)因素。

• 性能:詳盡的比較以及為什么比較起來這么難。

• 第三方支持:模塊,代碼庫,可視化,存儲(chǔ)庫,組織和開發(fā)環(huán)境。

• 用例:有些任務(wù)和工作類型適合其中一種或者另一種。

我們不能和睦相處嗎?Python 調(diào)用 R 和 R 調(diào)用 Python 。

預(yù)測(cè) R 還是 Python:吃你自家的狗糧的一個(gè)預(yù)測(cè)練習(xí)。

偏好:最終答案。

歷史

 

 

簡短概要:

ABC -> Python 發(fā)布(1989 Guido van Rossum)-> Python 2 (2000) -> Python 3 (2008)

Fortan -> S(貝爾實(shí)驗(yàn)室)-> R 發(fā)布(1991 Ross Ihaka 和 Robert Gentleman)-> R 1.0.0 (2000) ->R 3.0.2 (2013)

社區(qū)

當(dāng)比較Python和R的用戶時(shí),首先要記住的就是:

 

 

只有50%的Python用戶與R重疊

那是假定所有R程序員會(huì)用“科學(xué)和數(shù)字(Scientific and Numeric)”來稱呼他。我們也確定,無論程序員的等級(jí)如何,這個(gè)分布都是正確的。

要進(jìn)一步了解Python“宣傳”,請(qǐng)閱讀關(guān)于Python宣傳調(diào)查結(jié)果:https://www.linkedin.com/pulse/python-hype-survey-results-experience-any-drastic-decline-brian-ray/

如果我們只看科學(xué)和數(shù)字社區(qū),這就會(huì)把我們帶到第二類社區(qū),哪個(gè)社區(qū)?在所有的科學(xué)和數(shù)字社區(qū)中有一些子社區(qū)。盡管也許還會(huì)有一些重疊,因?yàn)槟銜?huì)懷疑他們與大一些的R/Python社區(qū)之間的交互方式確實(shí)不同。

一些使用Python/R的子社區(qū)的例子:

• 深度學(xué)習(xí)

• 機(jī)器學(xué)習(xí)

• 高級(jí)分析

• 預(yù)測(cè)分析

• 統(tǒng)計(jì)

• 探索和數(shù)據(jù)分析

• 學(xué)術(shù)可惜研究

• 幾乎無窮無盡的計(jì)算領(lǐng)域研究

然而每個(gè)領(lǐng)域看起來都只致力于一個(gè)專門社區(qū),你會(huì)發(fā)現(xiàn)R在如統(tǒng)計(jì)和探索之類的領(lǐng)域中更加流行。不久前,你可能會(huì)使用R進(jìn)行構(gòu)建運(yùn)行或者做一些非常有意義的探索,而使用的時(shí)間比安裝Python或者用它來做相同的探索的時(shí)候短得多。

這一切都被顛覆性的技術(shù)改變了,他們是Jupyter notebook和Anaconda。

注:Jupyter Notebokks:在瀏覽器中可以編輯Python/R代碼;Anaconda:可以為Python和R簡單的安裝和打包

既然你可以在一個(gè)方便提供報(bào)告和現(xiàn)成的分析的環(huán)境啟動(dòng)運(yùn)行,就已經(jīng)排除了一個(gè)橫在那些想要完成這些任務(wù)的人和他們喜愛的語言之間的障礙。Python現(xiàn)在可以使用獨(dú)立于平臺(tái)的方式打包,而且可以更快的提供快速、低成本的分析比。

在社區(qū)中影響了語言選擇的另一個(gè)區(qū)別就是“開源”思想。不僅是開源庫,還有致力于開源的協(xié)作社區(qū)的影響。諷刺的是,開源許可軟件,像Tensorflow這樣的軟件到GNU Scientific Library(各自為Apache和GPL),他們看起來都有Python和R綁定。盡管有R的公共版權(quán),還是有更多人純粹的支持Python社區(qū)。另一方面,看起來有更多的企業(yè)支持R,特別是那些有統(tǒng)計(jì)方面歷史的。

最后,考慮到社區(qū)和協(xié)作,在Github上Python的支持更多。如果我要看最新Python包趨勢(shì),我會(huì)看到有超過3.5萬個(gè)關(guān)注的Tensorflow之類的項(xiàng)目。相反,如果我看R包的最新趨勢(shì),像Shiny,Stan…之類的包,他們都少于2千個(gè)關(guān)注。

性能

性能提升很困難,因?yàn)橛刑嗟闹笜?biāo)和情況需要測(cè)試了,也很難基于特定的硬件來測(cè)試。一些操作在某個(gè)語言里已經(jīng)做了優(yōu)化,但其它語言里卻還沒有實(shí)現(xiàn)。確實(shí),你可能會(huì)失去一些東西,比如:一些人會(huì)抱怨,一些人會(huì)離開,整個(gè)分析報(bào)告也可能會(huì)被丟棄。無論如何,生活還是要繼續(xù)... ...

循環(huán)

在繼續(xù)之前,讓我們先看一下 Python 和 R 是怎么樣使用的。在 R 中,你是如何做循環(huán)迭代的呢?R 語言有稍微的不同。

 

 

 

 

通過一個(gè)快速的完整性檢查, 包括加載時(shí)間和命令行運(yùn)行時(shí)間: R 耗時(shí) 0m0.238s, Python 耗時(shí)是0m0.147s. 再次,這不是一個(gè)嚴(yán)謹(jǐn)?shù)臏y(cè)試。

一個(gè)快速的測(cè)試顯示 Python 代碼會(huì)快很多,通常,這并不是太重要。

既然速度不是重點(diǎn),那數(shù)據(jù)科學(xué)家更關(guān)心哪些東西呢?從這兩門語言最新的趨勢(shì)發(fā)現(xiàn),它們被用作命令式語言的能力是一個(gè)重要的因素。比如,大多數(shù) Python 程序員嚴(yán)重依賴 Pandas 來工作。這又引出了下一個(gè)主題:兩種語言都有哪些模塊和庫,它們又是如何實(shí)現(xiàn)的?這是一個(gè)更有意義的比較。

第三方支持

包管理工具

Python 使用 PyPi ,R 使用 CRAN ,Anaconda 同時(shí)支持二者。

CRAN 使用它內(nèi)部的“install.packages”命令做分發(fā)管理。截至目前為止,CRAN 上有大約 12000 個(gè)有效的軟件包。瀏覽一下你就會(huì)發(fā)現(xiàn),大約二分之一的包是關(guān)于數(shù)據(jù)科學(xué)的,占了大約 6000 個(gè)還不止。

PyPi 上有超過 CRAN 十倍數(shù)量的包,大約 141000 個(gè)左右。其中有大約 3700 個(gè)包被標(biāo)識(shí)為科學(xué)工程相關(guān)的。當(dāng)然還有大量的包實(shí)際是科學(xué)相關(guān)的,但并沒有被正確標(biāo)識(shí)出來。

這兩種語言好像并沒有受到大量的重復(fù)勞動(dòng)的影響。確實(shí),當(dāng)我在 PyPi 上搜索“隨機(jī)森林”時(shí),我搜到了 170 個(gè)項(xiàng)目,可是,這些包之間又有些許的不同。

盡管 Python 包的數(shù)量超過 R 十倍之多,但做數(shù)據(jù)科學(xué)計(jì)算的包的數(shù)量卻差不多,也許 Python 更少一些。

大量有效的第三方庫是非常重要的,所有東西都要從頭寫是非常痛苦的。同樣地,我也希望你做一些工作來回饋社區(qū)。

速度很重要

DataFrames vs Pandas可能是一個(gè)更有意義和更重要的比較。

我們進(jìn)行一個(gè)實(shí)驗(yàn):在進(jìn)行復(fù)制的時(shí)候進(jìn)行一個(gè)復(fù)雜的遍歷,比較兩者的執(zhí)行時(shí)間。下面是結(jié)果:

 

 

源代碼: http://nbviewer.jupyter.org/gist/brianray/4ce15234e6ac2975b335c8d90a4b6882

正如我們看到的結(jié)果,Python+Pandas要比原生的R DataFrames快很多。請(qǐng)注意這并不意味著Python要比R快。Pandas是基于C語言寫的Numpy庫的。

想象一下這個(gè)!

 

 

我真正想說的是ggplot2 vs matplotlib。聲明:matplotlib是Python社區(qū)里我最看重的一個(gè)人寫的,他教會(huì)了我Python,他就是 John D. Hunter。

Matplotlib是一個(gè)強(qiáng)大而且可個(gè)性化定制的庫,雖然不太容易學(xué)但是擴(kuò)展性非常好。ggplot不但不易個(gè)性化定制而且可以說更加困難。

如果你喜歡漂亮的繪圖圖案,而且并不需要自定義繪圖,R是我的選擇。如果你需要做更多的事情選擇Matplotlib,他甚至可以幫助與bokeh進(jìn)行交互。同樣,你可能在尋找的ShinnyR對(duì)R而言也會(huì)增加其交互性。

難道我們不能同時(shí)使用兩種語言嗎?

有些人可能要問:你為什么不能同時(shí)使用兩種語言呢?

有一些情況你可以同時(shí)使用這兩個(gè)。比如當(dāng):

• 你的項(xiàng)目組或組織允許的時(shí)候。

• 你能比較容易地同時(shí)維護(hù)這兩種環(huán)境。

• 你的代碼不需要遷移到另一個(gè)系統(tǒng)。

• 你不會(huì)給別人制造一些混亂。

一些可以使兩者同時(shí)工作的方法:

Python 對(duì) R 的包裝器,比如:rpy2,pyRserve,Rpython,... (rpy2 擴(kuò)展在 Jupyter 中有使用)

R 也有一些包,比如:rPython,PythonInR,reticulate,rJython,SnakeCharmR,XRPython

在 Jupyter 里,混合這兩種語言,舉例如下:

 

 

然后,我們可以傳遞 pandas 數(shù)據(jù)幀,它會(huì)通過 rpy2 被自動(dòng)轉(zhuǎn)換為 R 數(shù)據(jù)幀,傳遞時(shí)加上 “-i df”開關(guān)。

 

 

代碼源: http://nbviewer.jupyter.org/gist/brianray/734bd54f468d9a6db9171b2cfc98405a

R 與 Python 預(yù)測(cè)

Kaggle 上的一個(gè)用戶寫了一個(gè)關(guān)于預(yù)測(cè)開發(fā)人員使用 R 還是 Python 的內(nèi)核。他根據(jù)這些數(shù)據(jù)得出了一些有趣的觀察結(jié)果:

 

 

• 如果你希望明年轉(zhuǎn)向 Linux ,你更有可能是一個(gè) Python 用戶。

• 如果你研究統(tǒng)計(jì)學(xué),你更有可能是 R 用戶。如果你研究計(jì)算機(jī)科學(xué),你可能是 Python 用戶。

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

• 如果你進(jìn)行代碼競賽,你更可能是 Python 用戶。

• 如果你明年想使用安卓,你更可能是 Python 用戶。

• 如果你明年想學(xué)習(xí) SQL ,你更可能是 R 用戶。

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

• 如果你明年想使用 Rasperry Pi ,你更可能是一個(gè) Python 用戶。

• 如果你是全日制學(xué)生,你更可能是 Python 用戶。

• 如果你使用敏捷方法,你更可能是 Python 用戶。

• 如果你對(duì) AI 的看法是擔(dān)憂而不是興奮,你更可能是 R 用戶。

偏好

當(dāng)我與Alex Martelli, Googler 和 Stack Overflow的統(tǒng)治者通信時(shí),他向我解釋為什么Google開始使用他們官方支持的一些語言。即使在像Google這樣的自由精神創(chuàng)新空間,似乎有一些制度。這是在這里能起作用的偏好,公司偏好。

除了企業(yè)偏好,有些人在組織里經(jīng)常創(chuàng)造第一。我知道在Deloitte第一個(gè)使用R語言的是誰。他仍然在公司,他是數(shù)據(jù)學(xué)家的領(lǐng)軍人。重點(diǎn)是,在所有事情上我通常會(huì)建議,遵循你的愛。愛你所追隨的,引領(lǐng)潮流,愛你所做的。

一個(gè)合格的聲明,雖然我從未成為工具的第一思考著,但如果你正在做一寫重要的事情,那可能不是做實(shí)驗(yàn)的最佳時(shí)機(jī)。錯(cuò)誤是可能的。然而,每個(gè)精心的設(shè)計(jì)數(shù)據(jù)科學(xué)項(xiàng)目都給數(shù)據(jù)學(xué)家留下了一定的空間。使用其中的一部分來學(xué)習(xí)和實(shí)驗(yàn)。保持開源心態(tài),擁抱多樣性。

標(biāo)簽: b2c Google linux 代碼 數(shù)據(jù)分析 搜索 通信

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

上一篇:開發(fā)者如何挑選最合適的機(jī)器學(xué)習(xí)框架?

下一篇:NLP概述和文本自動(dòng)分類算法詳解