日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

数据科学哪家强?Python和R的对决

發(fā)布時(shí)間:2023/11/21 综合教程 33 生活家
生活随笔 收集整理的這篇文章主要介紹了 数据科学哪家强?Python和R的对决 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

  Norm Matloff 是加州大學(xué)戴維斯分校的計(jì)算機(jī)科學(xué)教授,他針對數(shù)據(jù)科學(xué)界常年?duì)幷摰囊c(diǎn),作了一篇關(guān)于 R 和 Python 的對比分析。

  在分析開始之前,Matloff 先拋出自己可能帶有的潛在偏見:他寫過 4 本與 R 相關(guān)的書,在 useR! 和其他 R 的會議上做過演講,并且目前擔(dān)任 R 期刊的主編。但同時(shí)他也用 Python 敲過多年代碼。Matloff 希望自己的分析能夠被認(rèn)為是公平且有幫助的。

  接著,這位專業(yè)的計(jì)算機(jī)科學(xué)家和統(tǒng)計(jì)學(xué)家從以下幾方面對 R 和 Python 做出了對比:

  優(yōu)雅

  Python 明顯勝出。

當(dāng)然這是主觀的。但是在不同編程語言的對比之下,Python 大大減少了括號的使用:

if x > y:
   z = 5
   w = 8

  vs.

if (x > y)
{
   z = 5
   w = 8
}

  Python 很時(shí)尚!

  學(xué)習(xí)曲線

  R 在這一場贏得巨大勝利。

  作為一名教育工作者,Matloff 對這一點(diǎn)尤其感興趣。

  若使用 Python 做數(shù)據(jù)科學(xué),必須學(xué)習(xí)很多不在基礎(chǔ) Python 中的材料,例如 NumPy、Pandas 和 matplotlib。

  相比之下,矩陣類型和基本圖形已經(jīng)內(nèi)置于基礎(chǔ) R,新手可以在幾分鐘內(nèi)完成簡單的數(shù)據(jù)分析。

  即使對于精通系統(tǒng)的人來說,Python 庫也很難配置,而大多數(shù) R 軟件包都是開箱即用的。

  可用的數(shù)據(jù)科學(xué)庫

  R 輕微取勝。

  CRAN 擁有超過 14,000 個(gè)包。PyPI 的包則多于 183,000 個(gè),不過在數(shù)據(jù)科學(xué)方面看起來似乎比較薄弱。

  Matloff 舉了一個(gè)例子:他曾經(jīng)需要代碼來快速計(jì)算給定數(shù)據(jù)點(diǎn)的最近相鄰,在 CRAN 中能夠立即找到不止一個(gè)包來執(zhí)行此操作。而在 PyPi 中粗略搜索后空手而歸。

  他還指出在 PyPI 中進(jìn)行以下搜索沒有任何結(jié)果:EM 算法;對數(shù)線性模型;泊松回歸;工具變量;空間數(shù)據(jù);整體錯誤率等等。

  “這并不是說這些東西不存在 Python 庫。只是在 PyPI 中不容易找到它們,而在 CRAN 中很容易找到。”

  事實(shí)上,R 具有規(guī)范的封裝結(jié)構(gòu)是一個(gè)很大的優(yōu)勢。安裝新軟件包時(shí),確切地知道會出現(xiàn)什么。類似地,R 的泛型函數(shù)對于 R 來說也是一大的優(yōu)勢。當(dāng)使用新的包時(shí),人們知道自己可以使用 print ()、plot ()、summary ()等,所有這些都構(gòu)成了包的“通用語言”。

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

  Python 略微勝出。

  R vs. Python 辯論主要是統(tǒng)計(jì)與 CS 的爭論,由于神經(jīng)網(wǎng)絡(luò)的大多數(shù)研究來自 CS,因此 NN(Neural Network,神經(jīng)網(wǎng)絡(luò)) 的可用軟件主要是 Python。RStudio 在開發(fā) Keras 實(shí)現(xiàn)方面做了一些出色的工作,但目前為止,R 在這個(gè)領(lǐng)域受到限制。

  另一方面,隨機(jī)森林研究(random forest research)主要由統(tǒng)計(jì)界進(jìn)行,在這個(gè)領(lǐng)域 R 更具優(yōu)越性。R 還具有優(yōu)異的梯度增強(qiáng)封裝。

  這里 Python 略勝一籌,因?yàn)閷芏嗳藖碚f,機(jī)器學(xué)習(xí)就意味著神經(jīng)網(wǎng)絡(luò)。

  統(tǒng)計(jì)正確性

  R 贏得大勝。

  Matloff 表示 “R 是由統(tǒng)計(jì)學(xué)家為統(tǒng)計(jì)學(xué)家編寫的”。他發(fā)現(xiàn)“那些主要使用 Python 進(jìn)行機(jī)器學(xué)習(xí)的人往往對其中的統(tǒng)計(jì)問題缺乏了解,甚至不屑一顧”。

  并行計(jì)算

  雙方打成平手。

  R 和 Python 的基礎(chǔ)版本都不能很好地支持多核計(jì)算。Python 中的線程很適合 I/O,但由于臭名昭著的 Global Interpreter Lock,使用它們進(jìn)行多核計(jì)算是不可能的。Python 的多處理軟件包和 R 的“并行”軟件包都不是好的解決方法。支持集群計(jì)算的外部庫在兩種語言中都 OK。

  目前,Python 具有更好的 GPU 接口。

  C/C++ 接口和性能增強(qiáng)

  R 略勝一籌。

  雖然有 SWIG 等工具可以將 Python 連接到 C/C++,但目前沒有像 R 的 Rcpp 那樣強(qiáng)大的功能。Pybind11 軟件包正在開發(fā)中。

  此外,R 的新 ALTREP 理念在提高性能和可用性方面具有巨大潛力。

  另一方面,Python 的 Cython 和 PyPy 變體在某些情況下可以預(yù)先消除對顯式 C/C++ 接口的需求。確實(shí)有人會說 Cython 是一個(gè) C/C++ 接口。

  面向?qū)ο螅幊?/strong>

  依然是 R 略勝一籌。

  舉例來說,盡管函數(shù)在兩種語言中都可作為對象,但 R 比 Python 更進(jìn)一步。Matloff 說每當(dāng)自己使用 Python 工作時(shí),都會因?yàn)闊o法直接將函數(shù)輸入到終端或編輯它而感到惱火,但在 R 上就可以這樣做。

  Python 只有一個(gè) OOP 范例。在 R 中,可以選擇幾種(S3、S4、R6 等),不過也有些人可能會爭論這是否是一件好事。

  R 有神奇的元編程特性(產(chǎn)生代碼的代碼),但是大多數(shù) CS 人都沒有意識到它。

  語言統(tǒng)一性

  R 慘敗。

  Python 目前正在從 2.7 版過渡到 3.x 版,這會導(dǎo)致一些中斷,但不至于太復(fù)雜。

  相比之下,R 正迅速轉(zhuǎn)變?yōu)閮煞N相互無法理解的語言,即普通的 R 和 Tidyverse。作為一名經(jīng)驗(yàn)豐富的 R 程序員,Matloff 表示自己無法閱讀 Tidy 代碼,因?yàn)樗{(diào)用了許多他不知道的 Tidyverse 函數(shù)。也有網(wǎng)友評論說“人們可以在對 R 沒什么了解的情況下,在 Tidyverse 中進(jìn)行編碼”。

  關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)

  Python 獲勝。

  經(jīng)典計(jì)算機(jī)科學(xué)數(shù)據(jù)結(jié)構(gòu),例如二叉樹,很容易在 Python 中實(shí)現(xiàn)。它不是基礎(chǔ) R 的一部分,但可以以各種方式完成,例如數(shù)據(jù)結(jié)構(gòu)包,它包含了使用廣泛的 Boost C++ 庫。

  在線幫助

  R 大獲勝。

  首先,R 的基本 help () 函數(shù)比 Python 的信息量大得多。它很好地補(bǔ)充了 example ()。最重要的是,在 R 包中能夠編寫 vignette(通過函數(shù) vignette () 返回,一般是 PDF 格式的實(shí)用介紹性文章)使 R 在這方面成為了一個(gè)不折不扣的贏家。

  R/Python 互操作性

  RStudio 開發(fā)的 reticulate 包能夠在 R 上運(yùn)行 Python,可以作為 Python 和 R 之間的橋梁,適用于純計(jì)算。 但它并沒有解決 Python 中出現(xiàn)的棘手問題,例如虛擬環(huán)境等。

  目前,Matloff 不建議編寫混合的 Python/R 代碼。

  分析了這么多,最后當(dāng)然還是要根據(jù)實(shí)際需求來進(jìn)行選擇,畢竟語言之間沒有孰優(yōu)孰劣。

總結(jié)

以上是生活随笔為你收集整理的数据科学哪家强?Python和R的对决的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。