R語言兵器譜:數據科學家的十八般武藝

在過去一年的數據科學的實踐中,總有人問我平時如何學習R語言的,被問的次數多了,多少有點有感而發,剛好前段時間Mark了一個資料說有哪些R包是數據科學家的必備武器,就打算結合自己的學習經驗談談如何學習R語言。作為一名剛從R入門階段開始進階的統計小碩而言,寫這樣的文章真的只是經驗之談,現在國內R語言大咖越來越多,無論是對R語言還是數據科學來說,都是值得慶幸的事。

從當初計量經濟學課開始接觸R語言到現在,兩年時間還不到,大約一年前開始認識到數據科學和R語言的潛力與優勢,下決心認真學習R。相關的R教材全文通讀的只有《R語言實戰》和《R語言與數據挖掘》,兩本都是中譯本的書,當初看教材效果並不好,隔三差五總有亂七八糟的事,兩天不寫代碼再一下手就各種報錯,依靠早期的熱情好歹通了個讀,後來便不再執著於去啃教材,幾百頁的大書要是沒個熱情支撐著讀個幾十頁就放棄了。去年下半年開始決定找實際的數據分析與數據挖掘小項目練手,做了之後發現收穫匪淺,進步也是來的比之前大,開始的時候是從kaggle或者UCI(加州大學歐文分校)機器學習庫上面找一些數據集來練手,後來又覺得這樣現成的數據對自己幫助不大,又去學習爬蟲,從開始用Python寫scrapy框架到後來的Rvest/RCurl抓數據,發現隨心所欲的抓一些自己想要的數據然後自己清洗自己manipulate的感覺是真好,就這樣斷斷續續的按照數據採集、數據清洗、數據分析、數據挖掘、結果可視化這樣的一整套數據分析流程的套路做了些自己喜歡的小項目,期間抓過拉勾網的招聘數據做分析、從NBA官網抓一些球員的技術統計數據做分析以及還有鏈家杭州二手房的數據分析等等。有人可能會問了,你碰到問題一般怎麼解決的呢?最直接的求助方式當然是利用R幫助文檔了,解決問題的同時還能鍛煉英文,何樂而不為。或者去人大經濟論壇、統計之都、CSDN論壇以及Github上去找答案,偶爾也去谷歌一下,畢竟百度太不靠譜。沒事的時候就刷刷技術論壇,收穫總是有的。去年一年參加過三場中國R會議,5月份的北京人大場、10月份的杭州浙財場以及12月份的上海華師大場,那會兒聽得不認真,更多的是去見世面的,想看看那些學界業界大拿們都在用R用數據科學做些什麼研究。

到今年三月份的時候,隨著畢業的日子臨近和之前對數據科學工作的了解,又覺得自己學到的遠不足以支撐到找到一份數據挖掘的工作,心底里又開始重新規劃,在學習R的同時又追著Python猛一頓捶,後來中間又因為其他事情學習計劃中斷了好長時間,好在現在又重新撿起來了。期間去面試過幾家數據分析與數據挖掘的實習生崗位,就是想了解下他們的職位要求都具體有哪些。回來之後又去補了一段時間的excel和MySQL,中間開始做公眾號,算是督促自己學習。今年又報了研究生數學建模競賽,打算這次比賽好好準備,爭取能拿個能看的成績,因為出去面試的時候發現那些HR們還是很看重這些比賽的含金量的。亂七八糟扯這麼多,就是簡單說下自己的學習經歷,這篇文章既然是講R語言兵器譜,那下面就進入正文,看看要成為一名數據科學家的R user應該掌握哪些R包呢。

● 2017年值得關注的新包

prophet - 時間序列包。預測精度極高。

purrr- R語言函數式編程工具。

lintr- 主要用於統計分析。

tensorflow- 大名鼎鼎的TensorFlow也入駐R了,上半年簡直是被這個詞各種刷屏,但依然沒時間去管它。

R集成開發環境

RStudio- 這個就不說了,天天要用的。

R Commander- 很和諧的GUI,值得一試。

IRKernel- Jupyter的R語言內核,還沒去了解。

R數據處理

dplyr- 這個五星力薦。快速實現對數據框的各種操作和對資料庫的查詢。這個包應該是每位R user的進階之包了吧。

data.table- 也是數據操縱的,有一套簡短而靈活的語法。

reshape2- 數據重鑄、融合、歸總等等,簡直神器。和dplyr一起玩6了能把數據倒著玩。

stringr- R語言字元串處理包。當初寫爬蟲的時候各種嘗甜頭,可以把字元串按在地下摩擦啊。

stringi- 跟stringr很像,具體哪裡像用了就知道。

lubridate- 處理時間數據就找這個包。

圖與可視化

ggplot2- Hadley大神的代表作。據說很多人捨不得從R轉向Python都是因為這個包。一套圖層式繪圖語言,玩6了你也是大神。

lattice- 四大圖形系統之一,我只是了解了下並沒有真正用過。

misc3d- 3D圖畫起來很好看。

networkD3- 基於JavaScript的網路圖。

Leaflet- 用它畫過杭州市地圖,互動式繪製地圖的代表。

rCharts- 互動式JS繪製表格。

Remap- 互動式動態繪製地圖。效果很炫。

wordcloud2- 繪製詞雲圖的。慣用套路是jiebaR分詞後詞雲畫一下,初次使用很驚喜。

R文本排版

knitr- 謝益輝寫的用來生成動態報告的。

rmarkdown- R語言動態文檔製作工具。做過一次,很好很強大。

網路技術與服務

shiny- 聽說shiny app做起來很贊,打算近期去試試。

RCurl- R語言爬蟲的一種。

rvest- R語言爬蟲的另一種。和css選擇器結合使用起來簡直是結構化網頁的殺手!我的第一個R爬蟲就是用rvest寫的。

XML- 在R中解析和生成XML的,只記得和RCurl放一起用過,有待探索。

Rcpp-CRAN上下載量第一的R包啊,可惜沒用過,據說是C語言介面,有待探索。

RMySQL-我的建議是,R和資料庫的介麵包必須掌握一個,最好的當然就是RMySQL了。

數據挖掘與機器學習

DM和ML的R包不可勝數,自己平時常用的是rattle,沒其他原因,不用編程!

caret- 分類與回歸。最常見的機器學習包。

e1071- 具體有哪些功能沒去查,貌似拿來訓練過貝葉斯網路。

forecast-計量經濟學與時間序列的好東西。

rpart- 決策樹。

RSNNS- 神經網路。

xgboost- kaggle上的大殺器,沒用過哈哈。

rattle- 最喜歡用的數據挖掘包了,不用寫代碼。

tm- 文本挖掘包,貌似應該歸在自然語言處理裡面。

優化計算

Ipsolve- 解決運輸問題。

Rglpk- 求解線性規劃。

Rdonlp2- 求解非線性規劃。

goalprog- 求解多目標規劃。

●●●

就列到這裡吧,全部R包僅在CRAN上發布的足足就有5000多個,每一個包後面都有一篇幾十頁PDF文檔形式的學術論文作為支撐。對於一名R user而言,掌握常見的數據分析與數據挖掘和機器學習包我看應該就夠了吧。

公眾號:數據科學家養成記(louwill12)


推薦閱讀:

Python數據科學(一)- python與數據科學應用(Ⅰ)
沈志勇:做一個大數據技術的搬運工
身為數據科學家怎麼能不掌握這四大技能!
Indeed報告:目前最熱門的10大AI類工作,數據科學家位居榜首

TAG:R編程語言 | 機器學習 | 數據科學家 |