作者:鲁伟 一个数据科学践行者的学习日记。数据挖掘与机器学习,R与Python,理论与实践并行。
个人公众号:数据科学家养成记 (微信ID:louwill12)
在过去一年的数据科学的实践中,总有人问我平时如何学习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而言,掌握常见的数据分析与数据挖掘和机器学习包我看应该就够了吧。