優(yōu)秀的數(shù)據(jù)科學(xué)編程語(yǔ)言是R還是Python?
編程語(yǔ)言之間的戰(zhàn)斗一直是許多人所感興趣的。 隨著世界的發(fā)展,我們每隔幾個(gè)月就會(huì)有一種新的編程語(yǔ)言或框架。 開(kāi)發(fā)人員/分析師/研究人員一直在尋找能夠以最低的成本獲得良好性能而完成任務(wù)的最佳語(yǔ)言。
在標(biāo)題中使用省略號(hào)的原因是,我們一直在尋找錯(cuò)誤的選擇語(yǔ)言的原因。 有多種因素導(dǎo)致選擇某種語(yǔ)言。 隨著數(shù)據(jù)科學(xué)項(xiàng)目的大量涌入市場(chǎng),問(wèn)題不再是"哪一種是最好的語(yǔ)言",而是哪一種適合您的項(xiàng)目需求和環(huán)境(工作環(huán)境)。
因此,在這篇文章中,我打算向您提出正確的問(wèn)題集,以便為您的數(shù)據(jù)科學(xué)項(xiàng)目選擇最佳的編程語(yǔ)言。
數(shù)據(jù)科學(xué)最常用的編程語(yǔ)言
Python和R是統(tǒng)計(jì)分析或以機(jī)器學(xué)習(xí)為中心的項(xiàng)目中使用最廣泛的語(yǔ)言(例如Java,Scala,Matlab)。
這兩種都是最先進(jìn)的開(kāi)源編程語(yǔ)言,具有強(qiáng)大的社區(qū)支持。 您將不斷學(xué)習(xí)有關(guān)實(shí)現(xiàn)更高級(jí)別的性能和復(fù)雜性的新庫(kù)和工具。
Python
Python以其易學(xué)易懂的語(yǔ)法而聞名。 使用像Python這樣的通用語(yǔ)言(所有行業(yè)),您可以構(gòu)建完整的科學(xué)生態(tài)系統(tǒng),而不必?fù)?dān)心兼容性或接口問(wèn)題。
Python代碼的維護(hù)成本很低,并且可以說(shuō)更強(qiáng)大。 從數(shù)據(jù)整理到功能選擇,Web抓取和我們機(jī)器學(xué)習(xí)模型的部署,Python可以通過(guò)所有主要ML和深度學(xué)習(xí)API(例如Theano,Tensorflow和PyTorch)的集成支持完成幾乎所有工作。
R
R是由院士和統(tǒng)計(jì)學(xué)家在二十多年前開(kāi)發(fā)的。 如今,R使許多統(tǒng)計(jì)學(xué)家,分析師和開(kāi)發(fā)人員都可以進(jìn)行分析。 我們?cè)贑RAN(開(kāi)放源代碼存儲(chǔ)庫(kù))中提供了超過(guò)12000個(gè)軟件包。
自從開(kāi)發(fā)人員牢記統(tǒng)計(jì)學(xué)家以來(lái),R成為所有核心科學(xué)和統(tǒng)計(jì)分析的首選。 我們?cè)赗中提供了一個(gè)軟件包,用于幾乎所有類(lèi)型的分析。 借助RStudio之類(lèi)的工具可以非常輕松地進(jìn)行數(shù)據(jù)分析,使您可以通過(guò)簡(jiǎn)潔明了的報(bào)告來(lái)傳達(dá)結(jié)果。
4個(gè)問(wèn)題,以了解最適合您的項(xiàng)目的語(yǔ)言!
那么,一個(gè)人如何為自己的工作做出正確的選擇?
嘗試回答以下四個(gè)問(wèn)題:
1. 您的組織/行業(yè)首選哪種語(yǔ)言/框架?
根據(jù)您所從事的行業(yè)以及同行和競(jìng)爭(zhēng)對(duì)手最常用的語(yǔ)言,您可能想說(shuō)相同的語(yǔ)言。 這是由David Robinson(數(shù)據(jù)科學(xué)家)進(jìn)行的分析,這反映了R在行業(yè)中的普及程度,您可以看到R在學(xué)術(shù)界和醫(yī)療保健中的使用非常出色。
因此,如果您想從事研究,學(xué)術(shù)或生物信息學(xué)研究,可以考慮使用R over Python。
硬幣的另一面是軟件行業(yè),應(yīng)用程序驅(qū)動(dòng)的組織和基于產(chǎn)品的公司。 您可能必須與組織基礎(chǔ)架構(gòu)的技術(shù)堆棧或同事/團(tuán)隊(duì)使用的語(yǔ)言緊密結(jié)合。
而且大多數(shù)組織/行業(yè)都具有基于Python的基礎(chǔ)架構(gòu),包括學(xué)術(shù)界:
對(duì)于有抱負(fù)的數(shù)據(jù)科學(xué)家來(lái)說(shuō),學(xué)習(xí)具有多種應(yīng)用程序并可能增加他們獲得工作機(jī)會(huì)的東西是一個(gè)明智的選擇。
2. 您的項(xiàng)目范圍是什么?
這是一個(gè)重要的問(wèn)題,因?yàn)樵谶x擇一種語(yǔ)言之前,您必須為您的項(xiàng)目確定一個(gè)議程,以及要在多大程度上使用它。
R:例如,如果您只想通過(guò)數(shù)據(jù)集簡(jiǎn)單地解決統(tǒng)計(jì)問(wèn)題,執(zhí)行一些多元分析,并準(zhǔn)備一份報(bào)告或解釋這些見(jiàn)解的儀表板,R可能會(huì)因?yàn)槠鋸?qiáng)大的可視化效果而成為更好的選擇 和通訊庫(kù)。
Python:另一方面,如果目標(biāo)是首先進(jìn)行探索性分析,開(kāi)發(fā)深度學(xué)習(xí)模型,然后將該模型部署到Web應(yīng)用程序,Python的Web框架以及所有主要云提供商的支持下,那么它無(wú)疑是贏家。 。
3. 您在數(shù)據(jù)科學(xué)領(lǐng)域的經(jīng)驗(yàn)如何?
對(duì)于對(duì)統(tǒng)計(jì)和數(shù)學(xué)概念了解有限的數(shù)據(jù)科學(xué)初學(xué)者,Python可能會(huì)成為更好的選擇,因?yàn)樗鼓梢暂p松地編寫(xiě)算法的片段。
使用NumPy之類(lèi)的庫(kù),您可以自己操縱矩陣和編碼算法。 作為新手,總要學(xué)習(xí)從頭開(kāi)始構(gòu)建東西,而不是跳到使用機(jī)器學(xué)習(xí)庫(kù)。
而如果您已經(jīng)了解了機(jī)器學(xué)習(xí)算法的基礎(chǔ)知識(shí),則可以選擇其中任何一種語(yǔ)言來(lái)開(kāi)始使用。
4. 您手頭有多少時(shí)間/學(xué)習(xí)費(fèi)用?
您可以投入的時(shí)間又為您選擇了另一個(gè)案例。 根據(jù)您在編程方面的經(jīng)驗(yàn)和項(xiàng)目的交付時(shí)間,您可以選擇一種語(yǔ)言而不是另一種語(yǔ)言來(lái)開(kāi)始該領(lǐng)域。
如果您的項(xiàng)目?jī)?yōu)先級(jí)較高,而且您不懂這兩種語(yǔ)言,那么R可能是您入門(mén)時(shí)更容易的選擇,因?yàn)槟枰邢薜木幊探?jīng)驗(yàn)或沒(méi)有編程經(jīng)驗(yàn)。 您可以使用現(xiàn)有庫(kù)用幾行代碼編寫(xiě)統(tǒng)計(jì)模型。
如果您有足夠的帶寬來(lái)探索庫(kù)并了解探索數(shù)據(jù)集的方法(如果使用R,可以在Rstudio中快速完成),那么Python(程序員的選擇)是一個(gè)很好的選擇。
結(jié)論
簡(jiǎn)而言之,R和Python功能之間的差距正在縮小。 大多數(shù)工作都可以用兩種語(yǔ)言完成。 兩者都有豐富的生態(tài)系統(tǒng)來(lái)支持您。
然后,為項(xiàng)目選擇語(yǔ)言取決于:
- 您先前在數(shù)據(jù)科學(xué)(統(tǒng)計(jì)和數(shù)學(xué))和編程方面的經(jīng)驗(yàn)。
- 當(dāng)前項(xiàng)目的領(lǐng)域以及所需的統(tǒng)計(jì)或科學(xué)處理范圍。
- 您的項(xiàng)目的未來(lái)范圍。
- 在您的團(tuán)隊(duì),組織和行業(yè)中得到最廣泛支持的語(yǔ)言/框架。

































