您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)r語(yǔ)言和python應(yīng)該選擇哪個(gè),小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
先簡(jiǎn)要介紹下R:
R語(yǔ)言由新西蘭奧克蘭大學(xué)的Ross Ihaka和Robert Gentleman于1995設(shè)計(jì)出來(lái)(由于兩人的名字均以 ‘R’ 字母開(kāi)頭,因此命名為R語(yǔ)言),現(xiàn)在由“R核心開(kāi)發(fā)團(tuán)隊(duì)“負(fù)責(zé)開(kāi)發(fā)。
雖然R主要用于數(shù)據(jù)分析、繪圖以及數(shù)據(jù)挖掘,但也有人用作矩陣計(jì)算。其計(jì)算速度可媲美專用于矩陣計(jì)算的開(kāi)源軟件GNU Octave和商業(yè)軟件MATLAB。
起初R主要在學(xué)術(shù)研究中使用,但近年來(lái)在企業(yè)界也表現(xiàn)突出,這使得R成為企業(yè)中使用的全球發(fā)展最快的統(tǒng)計(jì)語(yǔ)言之一。
我們看看什么情況下選R更好。
1.1 如果你的編程水平是菜鳥(niǎo)級(jí),選R
如果你的編程經(jīng)驗(yàn)有限,推薦先學(xué)R。
對(duì)于軟件開(kāi)發(fā)新手來(lái)說(shuō),Python可能不錯(cuò),但是我認(rèn)為R更適合數(shù)據(jù)科學(xué)新手。
但是數(shù)據(jù)科學(xué)和軟件開(kāi)發(fā)不是同一回事。
解釋一下為什么。
這種差異可歸結(jié)為:數(shù)據(jù)科學(xué)家使用編程語(yǔ)言的方式與軟件開(kāi)發(fā)者不一樣。對(duì)于數(shù)據(jù)科學(xué)新手來(lái)說(shuō),程序(programs)應(yīng)該是腳本(scripts),而不應(yīng)該是軟件(software)。
舉個(gè)例子,我們用R語(yǔ)言處理一個(gè)叫Auto數(shù)據(jù)框(dataframe):
library(ISLR)
data('Auto')
如果對(duì)R不熟悉,代碼的具體意義可暫時(shí)不理會(huì)。
數(shù)據(jù)框是R語(yǔ)言中最常用的數(shù)據(jù)類型之一,以行列的形式排布,有點(diǎn)類似Excel表格。
在這個(gè)Auto數(shù)據(jù)框中有個(gè)weight變量,表示汽車的重量。我們想利用它來(lái)創(chuàng)建一個(gè)以公斤為單位的新變量weight_kg。
有很多方法可以實(shí)現(xiàn)這個(gè)任務(wù)。最容易想到的方法是:利用for循環(huán)遍歷weight變量中的值,然后計(jì)算出新變量的值。聽(tīng)起來(lái)有點(diǎn)麻煩。
其實(shí)我們可以利用tidyverse包中已有的mutate函數(shù)直接計(jì)算出新變量的值:
mutate(Auto, weight_kg=weight*0.45)
再次提示,代碼的意義可先不理會(huì)。
這個(gè)方法避免使用for循環(huán),更簡(jiǎn)單。事實(shí)上,在R中要實(shí)現(xiàn)某種功能,只要你知道要用哪個(gè)函數(shù)和哪個(gè)包,實(shí)現(xiàn)將會(huì)變得非常簡(jiǎn)單。
在R中,你應(yīng)該盡量使用已有函數(shù)和包來(lái)完成相關(guān)任務(wù),沒(méi)必要自己創(chuàng)建工具來(lái)處理任務(wù)。這意味著你不需要知道很多傳統(tǒng)意義上的編程概念。事實(shí)上你應(yīng)該避免使用這些概念,比如:for循環(huán)、類、面向?qū)ο缶幊桃约捌渌浖_(kāi)發(fā)概念。
總之,相比Python,由于R的數(shù)據(jù)處理工具開(kāi)發(fā)得更好且更容易使用,我認(rèn)為R更適合做數(shù)據(jù)處理。
其實(shí)Python也有很多工具來(lái)直接處理數(shù)據(jù),比如pandas包,但是Python的包和語(yǔ)法具有‘軟件開(kāi)發(fā)’的味道,依賴于一些軟件開(kāi)發(fā)概念(像for循環(huán)、類和面向?qū)ο蟮鹊龋?。比如,?dāng)瀏覽一些Python書(shū)籍的時(shí)候,你仍會(huì)看到介紹for循環(huán)、類聲明等。對(duì)于那些沒(méi)有軟件開(kāi)發(fā)或計(jì)算機(jī)科學(xué)背景的新人來(lái)說(shuō),這些概念很難被理解。
相反,很多情況下即使沒(méi)有任何編程經(jīng)驗(yàn),你也可以很好地使用R的各種工具。
1.2 對(duì)于數(shù)據(jù)科學(xué)任務(wù),R的語(yǔ)法更直觀形象
對(duì)于數(shù)據(jù)處理任務(wù),很多時(shí)候R的語(yǔ)法會(huì)更簡(jiǎn)單。函數(shù)和參數(shù)的命名設(shè)計(jì)也更好,很容易記住和使用。
舉個(gè)例子,我們將分別用R和Python來(lái)刪掉Iris數(shù)據(jù)框中的兩個(gè)變量(由于R和Python都有Iris數(shù)據(jù)框,因此我們使用這個(gè)數(shù)據(jù)框)。
Python的優(yōu)勢(shì)
對(duì)于數(shù)據(jù)科學(xué)初學(xué)者,盡管我強(qiáng)烈推薦學(xué)R,但也不是唯一的選擇。
對(duì)于某些人,Python可能是最好的選擇。下面講一下哪些情況下選擇Python更好。
2.1 如果你有軟件開(kāi)發(fā)或計(jì)算機(jī)科學(xué)基礎(chǔ),學(xué)Python
如果你曾經(jīng)有軟件開(kāi)發(fā)經(jīng)驗(yàn)或者你是計(jì)算機(jī)科學(xué)專業(yè)的話,我認(rèn)為Python會(huì)更適合你。因?yàn)槟阋呀?jīng)有編程經(jīng)驗(yàn)了,使用Python會(huì)讓你更舒服。
2.2 想開(kāi)發(fā)軟件,學(xué)Python
我已經(jīng)說(shuō)了R更擅長(zhǎng)數(shù)據(jù)科學(xué)。如果你想建立軟件系統(tǒng)的話,我認(rèn)為Python更合適。Python的閃光點(diǎn)就是寫軟件,效率很高。就像一些專家所說(shuō)的那樣,寫Python代碼就如同寫偽代碼。
此外,Python是一門通用語(yǔ)言,基本啥都能干。然而R比較專,只是擅長(zhǎng)統(tǒng)計(jì)分析和可視化。
我想澄清一下,不是說(shuō)R不能寫軟件。只是更多人喜歡用Python去建立產(chǎn)品軟件。因此作為數(shù)據(jù)科學(xué)家,如果你想創(chuàng)立軟件系統(tǒng),我覺(jué)得Python比R更合適。
2.3 想搞機(jī)器學(xué)習(xí),學(xué)Python
如果你想長(zhǎng)期從事機(jī)器學(xué)習(xí)方面的研究,我建議你學(xué)Python。
其實(shí)R也有機(jī)器學(xué)習(xí)生態(tài)系統(tǒng)。特別地,R的caret 包開(kāi)發(fā)得很好,它有能力完成各種機(jī)器學(xué)習(xí)任務(wù)。比如:使用caret包建立回歸模型(regression model)、支持向量機(jī)(SVM)、決策樹(shù)(包括回歸和分類)以及執(zhí)行交叉驗(yàn)證(cross validation)等等??傊?,R的機(jī)器學(xué)習(xí)生態(tài)系統(tǒng)發(fā)展得很好。
但是,Python在機(jī)器學(xué)習(xí)方面的支持出現(xiàn)更早。為實(shí)現(xiàn)各種不同機(jī)器學(xué)習(xí)方法,Python的scikit-learn庫(kù)提供了一套更加簡(jiǎn)潔和易讀的語(yǔ)法。而R中caret包的語(yǔ)法有時(shí)有點(diǎn)拙劣。尤其,caret包與Tidyverse包兼容得不是很好,輸出的結(jié)果有時(shí)也很難處理。相反,Python的scikit-learn庫(kù)與Python生態(tài)環(huán)境整合得很好。
市面上有關(guān)機(jī)器學(xué)習(xí)的書(shū)籍,其算法實(shí)現(xiàn)很多都是用Python寫的。
總之,如果你想致力于機(jī)器學(xué)習(xí),我認(rèn)為Python會(huì)更好。
關(guān)于r語(yǔ)言和python應(yīng)該選擇哪個(gè)就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。