R:
R語言由新西蘭奧克蘭大學(xué)的Ross Ihaka和Robert Gentleman于1995設(shè)計出來(由于兩人的名字均以 ‘R’ 字母開頭,因此命名為R語言),現(xiàn)在由“R核心開發(fā)團隊“負責(zé)開發(fā)。
雖然R主要用于數(shù)據(jù)分析、繪圖以及數(shù)據(jù)挖掘,但也有人用作矩陣計算。其計算速度可媲美專用于矩陣計算的開源軟件GNU Octave和商業(yè)軟件MATLAB。
起初R主要在學(xué)術(shù)研究中使用,但近年來在企業(yè)界也表現(xiàn)突出,這使得R成為企業(yè)中使用的全球發(fā)展最快的統(tǒng)計語言之一。對于數(shù)據(jù)科學(xué)任務(wù),R的語法更直觀形象
對于數(shù)據(jù)處理任務(wù),很多時候R的語法會更簡單。函數(shù)和參數(shù)的命名設(shè)計也更好,很容易記住和使用。
舉個例子,我們將分別用R和Python來刪掉Iris數(shù)據(jù)框中的兩個變量(由于R和Python都有Iris數(shù)據(jù)框,因此我們使用這個數(shù)據(jù)框)。
我們來看看各自的語法:
Python
import seaborn as sns import pandas as pd iris = sns.load_dataset('iris') iris.drop(['sepal_length', 'species'], axis = 1)
R
library(dplyr) select(iris, -sepal_length, -species)
為了刪除變量,Python中使用了drop函數(shù),而R中使用了select函數(shù)。我們來對比這兩個函數(shù)(都在最后一行代碼)的語法。
先講Python,drop函數(shù)命名得很好,容易記住。但是參數(shù)設(shè)計得很復(fù)雜。
第一個參數(shù)是包含想要刪除變量的列表,Python中用方括號[ ]代表列表。這里你必須要用方括號,而且變量一定要用引號' ',要不然代碼會運行錯誤。
在數(shù)據(jù)可視化方面,R非常優(yōu)秀
可視化是選擇數(shù)據(jù)分析軟件的一個重要的標準。
除了擅長數(shù)據(jù)分析外,R的另外一個閃光點就是它的畫圖能力特別強,幾乎可以繪制出所有類型的圖。不信的話,你可以Google一下,輸入 'R visualization' 關(guān)鍵字。
Python的優(yōu)勢
對于數(shù)據(jù)科學(xué)初學(xué)者,盡管我強烈推薦學(xué)R,但也不是唯一的選擇。
對于某些人,Python可能是最好的選擇。下面講一下哪些情況下選擇Python更好。
如果你有軟件開發(fā)或計算機科學(xué)基礎(chǔ),學(xué)Python
如果你曾經(jīng)有軟件開發(fā)經(jīng)驗或者你是計算機科學(xué)專業(yè)的話,我認為Python會更適合你。因為你已經(jīng)有編程經(jīng)驗了,使用Python會讓你更舒服。
想開發(fā)軟件,學(xué)Python
我已經(jīng)說了R更擅長數(shù)據(jù)科學(xué)。如果你想建立軟件系統(tǒng)的話,我認為Python更合適。Python的閃光點就是寫軟件,效率很高。就像一些專家所說的那樣,寫Python代碼就如同寫偽代碼。
此外,Python是一門通用語言,基本啥都能干。然而R比較專,只是擅長統(tǒng)計分析和可視化。
我想澄清一下,不是說R不能寫軟件。只是更多人喜歡用Python去建立產(chǎn)品軟件。因此作為數(shù)據(jù)科學(xué)家,如果你想創(chuàng)立軟件系統(tǒng),我覺得Python比R更合適。
想搞機器學(xué)習(xí),學(xué)Python
如果你想長期從事機器學(xué)習(xí)方面的研究,我建議你學(xué)Python。
其實R也有機器學(xué)習(xí)生態(tài)系統(tǒng)。特別地,R的caret 包開發(fā)得很好,它有能力完成各種機器學(xué)習(xí)任務(wù)。比如:使用caret包建立回歸模型(regression model)、支持向量機(SVM)、決策樹(包括回歸和分類)以及執(zhí)行交叉驗證(cross validation)等等??傊琑的機器學(xué)習(xí)生態(tài)系統(tǒng)發(fā)展得很好。
但是,Python在機器學(xué)習(xí)方面的支持出現(xiàn)更早。為實現(xiàn)各種不同機器學(xué)習(xí)方法,Python的scikit-learn庫提供了一套更加簡潔和易讀的語法。而R中caret包的語法有時有點拙劣。尤其,caret包與Tidyverse包兼容得不是很好,輸出的結(jié)果有時也很難處理。相反,Python的scikit-learn庫與Python生態(tài)環(huán)境整合得很好。
市面上有關(guān)機器學(xué)習(xí)的書籍,其算法實現(xiàn)很多都是用Python寫的。
總之,如果你想致力于機器學(xué)習(xí),我認為Python會更好。
想搞深度學(xué)習(xí),學(xué)Python
深度學(xué)習(xí)可謂是目前人工智能領(lǐng)域最熱門的技術(shù)之一,而Python是深度學(xué)習(xí)使用最熱門的語言。
大多數(shù)深度學(xué)習(xí)框架都有Python接口,比如:TensorFlow,Keras,Pytorch,Theano,MXNET等等。
Python與各框架兼容得非常好,擁有大量貢獻者、搜索結(jié)果、相關(guān)書籍和學(xué)術(shù)文章;Github上的深度學(xué)習(xí)項目大多數(shù)都是用Python寫的。如果你是剛?cè)腴T深度學(xué)習(xí)的新手,使用Keras是不錯的選擇。
相比較,R對深度學(xué)習(xí)框架兼容方面表現(xiàn)不佳。因此如果你想專注深度學(xué)習(xí),Python可能更適合。
學(xué)R還是Python?主要還是依耐你的背景以及你的目標。
如果你沒有任何編程經(jīng)驗,建議你先學(xué)R;如果你想學(xué)數(shù)據(jù)可視化,我認為R的ggplot2包是最好的工具;如果你想專門從事數(shù)據(jù)分析和數(shù)據(jù)挖掘,R表現(xiàn)更優(yōu)秀。
如果你想成為機器學(xué)習(xí)專家,Python的scikit-learn庫可以好好研究一下;如果你想開發(fā)軟件系統(tǒng),Python更合適。
俗話說,技多不壓身,你還有第三個選擇:R和Python都學(xué)。實際上很多頂尖數(shù)據(jù)科學(xué)家這兩門語言都會。不過對于新手,一次只學(xué)一門。同時學(xué)兩門會讓你很混亂,學(xué)習(xí)周期會拉長,事倍功半。
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com