Python vs R : 在機(jī)器學(xué)習(xí)和數(shù)據(jù)分析領(lǐng)域中的對(duì)比

Image by: Opensource.com

為了鼓勵(lì)新工具的出現(xiàn)榄融,機(jī)器學(xué)習(xí)和數(shù)據(jù)分析領(lǐng)域似乎已經(jīng)成了“開(kāi)源”的天下。Python 和 R 語(yǔ)言都具有健全的生態(tài)系統(tǒng)救湖,其中包括了很多開(kāi)源工具和資源庫(kù)愧杯,從而能夠幫助任何水平層級(jí)的數(shù)據(jù)科學(xué)家展示其分析工作。

機(jī)器學(xué)習(xí)和數(shù)據(jù)分析之間的差異有些難以言明鞋既,但二者最主要的不同就在于力九,比起模型的可解釋性,機(jī)器學(xué)習(xí)更加強(qiáng)調(diào)預(yù)測(cè)的準(zhǔn)確性邑闺;而數(shù)據(jù)分析則更加看重模型的可解釋性以及統(tǒng)計(jì)推斷跌前。Python ,由于更看重預(yù)測(cè)結(jié)果的準(zhǔn)確性陡舅,使其成為機(jī)器學(xué)習(xí)的一把利器抵乓。 R ,作為一種以統(tǒng)計(jì)推斷為導(dǎo)向的編程語(yǔ)言靶衍,在數(shù)據(jù)分析界也得到廣泛應(yīng)用臂寝。

當(dāng)然,這并不代表二者只能在各自的一個(gè)領(lǐng)域中得到應(yīng)用摊灭。Python 也可以高效地完成數(shù)據(jù)分析工作,R 在機(jī)器學(xué)習(xí)中也具有一定的靈活性败徊。它們都擁有相當(dāng)多的資源庫(kù)去實(shí)現(xiàn)彼此特定的函數(shù)功能帚呼,比如 Python 就有很多資源庫(kù)來(lái)提高自己統(tǒng)計(jì)推斷的能力,R 也有很多包可以提升預(yù)測(cè)的準(zhǔn)確率。

Python 中關(guān)于機(jī)器學(xué)習(xí)和數(shù)據(jù)分析的包

雖然 Python 本身就更傾向于機(jī)器學(xué)習(xí)煤杀, 但它還是有很多包可以進(jìn)一步優(yōu)化這一屬性眷蜈。PyBrain 是一個(gè)模塊化的機(jī)器學(xué)習(xí)資源庫(kù),其中包含很多有效的算法可以滿足機(jī)器學(xué)習(xí)任務(wù)的需要沈自。除了很多直觀靈活的算法酌儒,這個(gè)資源庫(kù)還內(nèi)置很多環(huán)境可以用來(lái)檢驗(yàn)和比較這些機(jī)器學(xué)習(xí)算法的效果。

Scikit-learn 可能是 Python 最受歡迎的機(jī)器學(xué)習(xí)資源庫(kù)了枯途〖稍酰基于 Numpy 和 Scipy ,scikit-learn 提供大量用于數(shù)據(jù)挖掘和分析的工具酪夷,從而提高了 Python 本就出色的機(jī)器學(xué)習(xí)可用性榴啸。NumPy 和 SciPy 各自為戰(zhàn),雖然它們是 Python 中數(shù)據(jù)分析的核心部分晚岭,但數(shù)據(jù)分析家更可能僅僅原生地去使用它們鸥印,而不是基于一個(gè)更高的角度。 Scikit-learn 卻將二者結(jié)合成為一個(gè)機(jī)器學(xué)習(xí)資源庫(kù)坦报,同時(shí)也降低了大家的學(xué)習(xí)門(mén)檻库说。

在數(shù)據(jù)分析領(lǐng)域,Python 也因幾個(gè)庫(kù)而包受推崇片择。 作為其中最為著名的庫(kù)之一潜的,Pandas 為 Python 提供了高性能處理的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)分析工具。如同其他很多 Python 的庫(kù)一樣构回,從你著手一個(gè)新項(xiàng)目到真正做些有價(jià)值的工作這過(guò)程的時(shí)間將會(huì)因它大大縮短夏块。如果你執(zhí)著于 Python 同時(shí)又希望使用 R 的功能, RPy2 庫(kù)能夠提供所有 R 的主要功能纤掸,并給你一個(gè) R 在 Python 中使用的流暢化體驗(yàn)脐供。

R 中關(guān)于機(jī)器學(xué)習(xí)和數(shù)據(jù)分析的包

就像 Python 一樣,R 也擁有大量的包來(lái)提升它的表現(xiàn)借跪。要想在機(jī)器學(xué)習(xí)領(lǐng)域媲美 Python政己,R 中的 Nnet 包具有快速構(gòu)建神經(jīng)網(wǎng)絡(luò)模型的能力。通過(guò)提供一系列函數(shù)來(lái)提升所構(gòu)建模型的有效性掏愁,Caret 包也可以加強(qiáng) R 在機(jī)器學(xué)習(xí)的能力歇由。

就 R 在數(shù)據(jù)分析領(lǐng)域的表現(xiàn),仍然有很多包可以用來(lái)提升它本就出色的能力果港。不管是建模前的準(zhǔn)備沦泌,建模,以及建模后的分析工作辛掠,R 都有很多包可以勝任谢谦。這些包大多專(zhuān)門(mén)用來(lái)完成特定的任務(wù)释牺,比如數(shù)據(jù)的可視化,連續(xù)變量回歸和模型驗(yàn)證回挽。

兩種編程語(yǔ)言都擁有如此多交叉功能的資源庫(kù)和包没咙,你會(huì)選擇哪種編程語(yǔ)言作為伴你在數(shù)據(jù)戰(zhàn)場(chǎng)廝殺的武器呢?

在機(jī)器學(xué)習(xí)和數(shù)據(jù)分析中的 Python

32
如果你已經(jīng)有一些編程的基礎(chǔ)了千劈,Python 可能更加適合你祭刚。相較于 R ,Python 的語(yǔ)法結(jié)構(gòu)與其他編程語(yǔ)言更加類(lèi)似墙牌,便于上手涡驮。此外,就像是口頭語(yǔ)一樣憔古, Python 代碼的可讀性也是無(wú)人能及的遮怜。這種代碼的可讀性更加強(qiáng)調(diào)提高生產(chǎn)力,而 R 非標(biāo)準(zhǔn)的代碼可能會(huì)導(dǎo)致在編程進(jìn)程中的磕絆鸿市。

Python 是一種很靈活的編程語(yǔ)言锯梁,所以如果你打算把已經(jīng)完成的機(jī)器學(xué)習(xí)或者數(shù)據(jù)分析的項(xiàng)目移植到其他領(lǐng)域,那么使用 Python 可以使你不必再去學(xué)習(xí)新的編程語(yǔ)言焰情。

Python 的靈活性也使得它非常適用于生產(chǎn)陌凳。舉個(gè)例子,當(dāng)數(shù)據(jù)分析的任務(wù)需要與 Web 應(yīng)用程序相整合的時(shí)候内舟,你仍然可以使用 Python 且不需要和其他編程語(yǔ)言相整合合敦。而雖然 R 是一個(gè)很好的數(shù)據(jù)分析的工具,但它在數(shù)據(jù)分析之外的領(lǐng)域卻有所限制验游。

如果你剛?cè)腴T(mén)編程充岛,對(duì)那些“標(biāo)準(zhǔn)化”的語(yǔ)法并不熟悉,那么無(wú)論哪種編程語(yǔ)言的學(xué)習(xí)曲線對(duì)你而言都差不多耕蝉。但要是你希望跨過(guò)機(jī)器學(xué)習(xí)和數(shù)據(jù)分析的門(mén)檻崔梗,Python 可能是更好的選擇。特別是 Python 有 scikit-learn 庫(kù)的加持垒在。這個(gè)庫(kù)表現(xiàn)良好且更新頻繁蒜魄。 R 可能有很多包,但顯得有些零亂且一致性較差场躯。

在機(jī)器學(xué)習(xí)和數(shù)據(jù)分析中的 R


目前谈为, R 主要是用在科研和調(diào)查工作中。然而踢关,隨著 R 逐漸擴(kuò)展到商業(yè)領(lǐng)域伞鲫,這一現(xiàn)狀也開(kāi)始得到改變。 R 是由統(tǒng)計(jì)學(xué)家所創(chuàng)造出來(lái)的签舞,因此它可以很輕易地管理基本的數(shù)據(jù)結(jié)構(gòu)榔昔。給數(shù)據(jù)打標(biāo)簽驹闰,填充缺失值,篩選等等這些對(duì)于 R 而言很容易就可以實(shí)現(xiàn)撒会,R 也更加強(qiáng)調(diào)易于操作的數(shù)據(jù)分析,統(tǒng)計(jì)和圖形化模型工作师妙。

由于 R 是作為統(tǒng)計(jì)性的編程語(yǔ)言而構(gòu)建的诵肛,因此它具有很好的統(tǒng)計(jì)方面的支持。它能夠很好地展現(xiàn)統(tǒng)計(jì)學(xué)家的思維默穴,所以如果你具有統(tǒng)計(jì)背景的話怔檩,用起來(lái)會(huì)很順手。諸如像 statsmodels 包能夠基本覆蓋 Python 中的統(tǒng)計(jì)模型蓄诽,而且 R 中與統(tǒng)計(jì)模型相關(guān)的包功能會(huì)更加強(qiáng)大薛训。對(duì)于剛?cè)腴T(mén)的程序員, R 只需要寫(xiě)幾行代碼就能夠構(gòu)建模型了仑氛,這樣一來(lái)乙埃,它會(huì)比 Python 更容易解釋一些。

R 中與 Python 的 pandas 庫(kù)功能最為接近的大概就是 dplyr 包了锯岖,只不過(guò)它會(huì)比 pandas 庫(kù)限制得更多介袜。雖然這聽(tīng)起來(lái)不太好,但實(shí)際上使用 dplyr 包時(shí)會(huì)促使你更專(zhuān)注于尋求問(wèn)題的解決之道出吹,而且 dplyr 包的代碼也比 pandas 庫(kù)更容易理解遇伞。

選擇你自己的編程語(yǔ)言吧

R 最大的問(wèn)題在于一致性不夠好。其中的算法流程被分成三塊捶牢,使得它們相對(duì)而言不夠統(tǒng)一鸠珠。你不得不學(xué)習(xí)新的方法來(lái)建模并用新的算法來(lái)做預(yù)測(cè),伴隨這個(gè)過(guò)程秋麸,結(jié)果的有效性將會(huì)明顯下降渐排。你需要理解每個(gè)包是怎么用的,同樣地竹勉,R 中包的幫助文檔由于不夠完整飞盆,一致性也不好。

不過(guò)次乓,要是你需要一個(gè)數(shù)據(jù)分析的工具用于學(xué)術(shù)吓歇, R 絕對(duì)可以勝任這項(xiàng)工作。 Python 則被廣泛地用于商業(yè)也更便于協(xié)作票腰,不過(guò) R 也越來(lái)越得到重視了城看。不管是日常的使用和機(jī)器學(xué)習(xí),還是通過(guò)和 R 一般眾多的包來(lái)做數(shù)據(jù)分析杏慰, Python 都能做到测柠,因此也更推薦使用 Python 炼鞠。

如果你對(duì) R 還比較陌生,不如學(xué)習(xí) Python 并通過(guò) RPy2 包來(lái)實(shí)現(xiàn) R 的功能轰胁。 這樣一來(lái)谒主,你就可以在一種編程語(yǔ)言里同時(shí)使用二者的功能,而且由于很多公司已經(jīng)開(kāi)發(fā)了在 Python 中使用的生產(chǎn)系統(tǒng)赃阀, Python 可謂生產(chǎn)力高效霎肯。這點(diǎn)在 R 中就不適用了。一旦你學(xué)會(huì)了 RPy2 榛斯,再想跳到 R 里面并沒(méi)有那么復(fù)雜观游,不過(guò)反過(guò)來(lái)就相對(duì)而言困難得多了。

不管你想解決什么類(lèi)型的問(wèn)題驮俗, Python 和 R 都有功能相近的資源庫(kù)可以使用懂缕。每種編程語(yǔ)言都有很多的分支、模塊王凑、集成開(kāi)發(fā)環(huán)境和算法搪柑,以至于你難以出什么大的紕漏。不過(guò)要是你希望使用一個(gè)靈活性強(qiáng)荤崇,擴(kuò)展性好拌屏,多功能又能勝任機(jī)器學(xué)習(xí)和數(shù)據(jù)分析工作的編程語(yǔ)言, Python 或許是明智之選术荤。



原文鏈接:Python versus R for machine learning and data analysis

原文作者: Tom Radcliffe

譯作者:Vector

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末倚喂,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子瓣戚,更是在濱河造成了極大的恐慌端圈,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,496評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件子库,死亡現(xiàn)場(chǎng)離奇詭異舱权,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)仑嗅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)宴倍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人仓技,你說(shuō)我怎么就攤上這事鸵贬。” “怎么了脖捻?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,632評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵阔逼,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我地沮,道長(zhǎng)嗜浮,這世上最難降的妖魔是什么羡亩? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,180評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮危融,結(jié)果婚禮上畏铆,老公的妹妹穿的比我還像新娘。我一直安慰自己专挪,他們只是感情好及志,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著寨腔,像睡著了一般。 火紅的嫁衣襯著肌膚如雪率寡。 梳的紋絲不亂的頭發(fā)上迫卢,一...
    開(kāi)封第一講書(shū)人閱讀 51,165評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音冶共,去河邊找鬼乾蛤。 笑死,一個(gè)胖子當(dāng)著我的面吹牛捅僵,可吹牛的內(nèi)容都是我干的家卖。 我是一名探鬼主播,決...
    沈念sama閱讀 40,052評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼庙楚,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼上荡!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起馒闷,我...
    開(kāi)封第一講書(shū)人閱讀 38,910評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤酪捡,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后纳账,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體逛薇,經(jīng)...
    沈念sama閱讀 45,324評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評(píng)論 2 332
  • 正文 我和宋清朗相戀三年疏虫,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了永罚。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,711評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡卧秘,死狀恐怖呢袱,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情斯议,我是刑警寧澤产捞,帶...
    沈念sama閱讀 35,424評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站哼御,受9級(jí)特大地震影響坯临,放射性物質(zhì)發(fā)生泄漏焊唬。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評(píng)論 3 326
  • 文/蒙蒙 一看靠、第九天 我趴在偏房一處隱蔽的房頂上張望赶促。 院中可真熱鬧,春花似錦挟炬、人聲如沸鸥滨。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,668評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)烂完。三九已至泼舱,卻和暖如春宪睹,著一層夾襖步出監(jiān)牢的瞬間厉萝,已是汗流浹背鸥拧。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,823評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工茉稠, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留额湘,地道東北人卿吐。 一個(gè)月前我還...
    沈念sama閱讀 47,722評(píng)論 2 368
  • 正文 我出身青樓锋华,卻偏偏與公主長(zhǎng)得像嗡官,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子毯焕,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容