从R转到Python:这篇文章超有用~

 

你是否在考虑从R转到Python呢?这里有一些你应该知道的类库,以及这些类库是如何实在与R中类似的库的功能的、为什么我们需要学习它们。...


我  相  信  这  么  优秀  的  你 
 已  经  置 顶  了  我


翻译|王一丁 选文|小象

转载请联系后台



原文发布于Yhat blog,Yhat是一所位于布鲁克林的公司,这所公司致力于使开发者、数据科学家及商业者等都对数据科学有所作为。Yhat 提供开发和管理如 REST APIs的预测性算法的平台,同时对开发环境中的工程障碍,诸如测试、版本、规模化及安全等问题进行评估。

为什么要从R到Python?

一个我特别喜欢的Python的特点是,对于机器学习而言,Python拥有可在R社区中找到的各种优点,并且实现了其中最有价值的部分。我是十分信奉这样一种观点,既一种语言只会因它所拥有的类库而变得有效。因此在这里我将着重描述我使用R时几乎总会用到的一些关键包,同时还有Python中与这些这些包对应的部分。
glm,knn,randomForest,e1071 -> scikit-learn

值得赞美但同时也让人忍不住诅咒的是,在R中,机器学习算法是以包(package)的形式存在的,这也意味着除非使用一个(或一组)有共同算法的机器学习类库,库中的算法都会存在于单独的包中,看着这些复杂,但又很清楚的单独存在的算法时感觉会不错,但当日复一日的在算法间切换时,恐怕就会觉得不适了。而对于在算法间切换而产生的不适而言,Python的scikit-leran 却将之很好的解决了。具体来说,scikit-learn为同一API下的机器学习算法提供了同样的设置。这使LogisticRegression和GradientBoostingMachines之间的切换/转化可以直接进行。

reshape/reshape2,plyr/dplyr -> pandas

pandas将R中整理好的数据的最优部分转化为Python包,这个过程包括对于数据的解释。

通常情况下,这个过程会提取reshape/reshape2及plyr/dplyr中的最优部分并将之Python化。

ggplot2 -> ggplot + seaborn + bokeh

画图,是截至目前R优于python的地方,毫无疑问,R在细节上更有优势。然而Python在非连续的图像绘制方面更有优势。如果你喜欢ggplot风格的语法,那就不用再看Yhat自己的ggplot了,如果你是在深入统计与研究后画图,那么使用seaborn,如果你要使用一些光滑及有良好视觉效果的图,那么使用bokeh。

stringr -> nothing“R基础版”(简易的编译环境)中的字符操作常常使人感到无奈。当我使用R进行字符操作时,我通常会(顺序)做两件事:

1. 为新西兰走出了哈德利.韦汉(Hadley Wickham)表示敬意。

2. 导入stringr包
stringr当真是提升效率的利器,它有良好的书写与表现形式(至少我是这么认为的),同时也便于安装。

stringr可谓能独挑R中字符处理的大梁(也只有它可以)。好消息是Python对于字符的处理能力是很强的,你并不需要单独导入一个字符库就可以进行相应的操作!Python含有一个很不错的内置正则表达式的库文件,也即re,还有一个内置的称为 string的字符库。因为Python拥有诸如此类的字符相关的库,使用Python来进行字符操作可谓幸运。

Rstudio -> Rodeo

对于许多R的用户而言,Rstudio与R有着同样的意义。当然要这样想了,因为Rstudio是一个对于数据处理而言很棒的IDE。从历史角度讲,对于Python,并没有太多可供选择的IDE,当然现今这样的情况已经不再了。我们在一年前发布了Rodeo 1.0版本,并在大约一个月前公布了针对Windows,OSX,以及linux的2.0版本。

哥伦比亚大学伯克利分校的 Stephen Hsu教授说“从我们使用Rstudio起,我们就在找寻如Rstudio对R一般地针对Python的IDE,我们也考察过一些IDE,比如Sublime Text和Spyder,但是没有一款是完全合心意的,直到我们找寻到Rodeo,再没有比Rodeo更合适于我们需求的IDE了”。

Knitr->Jupyter

对于R,使用Knitr包是一个创建可重复与高度可视化分析的好方法,同样,Knitr作为Rstudio中重要的部分也已经有一段时间了,在Python环境中,相似的包是Jupyter,Jupyter notebooks为Python(及其它语言)提供着重于重构与可视化的交互式的编程环境,它甚至还有针对R的插件。

sqldf -> pandasql对于SQL用户而言,sqldf让他们可以在R中有良好的数据操作体验。就本人而言,我在一开始使用R的时候就开始使用sqldf了。言归正传,实际上Yhat也为Python创建了一个类似功能的包,叫pandasql,解决同样的需求:对数据集提交SQL命令,得到返回的新的数据集。

对于一个只有358行代码的包,三年前就在Github上有超过256个stars,这成绩也是不错的啦。

更多请查看阅读原文
译者介绍




王一丁

计算机软件,水过ACM和数学建模,但爱文字胜于代码。现在某地方政府,为人民服务中。有意转向数据方向,没事刷刷Coursera。


    关注 小象


微信扫一扫关注公众号

0 个评论

要回复文章请先登录注册