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