天天看点

慕小白聊R与Python概述

浅谈Python与R

  • 概述
    • 对于社会科学
    • 对于数据科学
    • 对于计算机科学
    • 总结

菜鸟小白的第一篇小博文

概述

关于R和Py到底应该学哪一个,这个问题经常被刚入手统计or数据科学的同学们热切讨论。其实,很多大佬已经对R与Py做了很深刻的对比,不比他们,我单从一个初学者的角度,谈谈R和Py。

本人公共管理专业出身,属于社会科学类(管理学),在代码的世界摸爬滚打全靠自己,练就了一身自学的本领,不怕苦不怕累。我的第一门编程语言是VB,简单的语法,友好的用户界面,便捷的控件调用给我留下了很深的印象,启发了我的编程思想,但是也给我学习其他语言带来了很大的不适应性。好在后来曲线救国,从MATLAB入手,理解了相关思想后,又学习了C,打这儿开始,我就可以看懂算法了(网络上经典算法实现以C居多,以VB实现极少)。之后是R,个人觉得R和MATLAB真的蛮像的,用起来又十分方便,且语法简单到不能再简单,没有严格的限制。后来因为转战机器学习的原因,学了python,个人觉得比R好用太多,在机器学习方面,速度比R快了数倍(之后会提到),但是语法稍显不太友好,让我有一种说不出的别扭。总体而言,我对这些语言都有了一些初步的认识。但是对于此类学科的其他同学而言,可能没有精力涉猎那么多种语言,下面,我将逐步安利一波。

对于社会科学

刚刚提到,本人公共管理专业出身,属于社会科学类(管理学),社会科学类专业一般由理论出发探索数据、由数据驱动反哺理论;会学一些相关的统计学知识——简单的统计描述、统计推断(回归分析、假设检验)诸如此类(这里不包括计量经济学,他们稍显复杂)。而且样本数量一般不超过四千个;一般只需解释、描述,不需要做预测;由于学科理论的限制,代入模型的自变量不会太多(数据科学的同学可以理解为“特征”),嵌套模型二十个特征已属于较多数量水平。综上,社会科学类的统计工具的运算能力不需要那么强大,反倒要在用户交互界面、绘图、常用分析手段的便捷程度上下功夫。所以,很显然,python的强大在社科类专业领域无法得到很好的体现。

社科类专业常用的软件有:SAS、SPSS、Stata,其中spss是按钮化傻瓜操作,虽然繁琐但是功能强大,甚至还可以做神经网络,完全可以满足社会科学类数据分析的需要。在这种局面下,当然是学好常用的软件会比较好,常用的软件掌握娴熟了,再来考虑学R还是Python。

当然,如果你觉得你已经很好了,可以尝试一下R,比较推荐的是RStudio这个IDE,功能强大不说,界面也简洁大方,比stata好看不知道多少。男人嘛,都是视觉动物。需要提及的是,R的矩阵、数据框变换可能对于刚入门的同学来说不是那么友好,但是相信我,绝对是除MATLAB外最便捷的一款软件,比python方便太多。因为社科类的研究可能会涉及到重新编码或者是变量筛选之类的操作,如果矩阵、数据框的操作不熟悉,会耗费你大量的时间,还不如直接用专业的统计学软件,又快又省心。当然,你要是纯粹是为了用R而用R,大可以用统计软件处理数据后在导入R中进行运算,但这。。。这不是撑的吗?

对于经济学专业的同学,除了eviews这个我没用过的软件之外,业界可能比较流行R语言。解决一般的分析问题应该是足够了。

R的强大在于他有一系列包,几乎可以解决一般人会遇到的任何问题,以及简洁的包管理方式,随时勾选即可调取。譬如ggplot2,如果要用他绘图,只需在packages页面下勾选“ggplot2”,彻底解决了文科小糊涂记不住奇奇怪怪包名的问题。(这个包据说特别强大,的确,我到现在也只解锁了一小部分用法而已。)

对于数据科学

数据科学,绝对是Python,这个没的说。前文提到,“我认为python比R快太多”,这个可能初学者体会不到。曾经某次,做文本情感分类,用R做语料库后生成词频逆文档矩阵,再用随机森林分类器进行训练,也不过是7000+特征,6000+样本,竟然跑了五个多小时,最后还显示报错。当时简直崩溃。从那开始,更加努力地学习python,果断放弃用调试一次五个小时的R。更坑的是,R只能用一个console,他要是卡死了,你不舍得终止都不行。怎么?想另起炉灶?门儿都没有啊!

R对于数据科学来说,特别是处理大样本数据、特征数量多的情况下,内存管理是一个相当致命的问题。譬如处理稀疏矩阵来说,如果训练集的维度过大(可能不需要达到10000?),电脑全部内存就会被吃掉。对,全部。而python就不会,处理相同项目内存占用率绝不会超过40%,这就是差距。当然,由于本人菜鸡,还暂时没有弄清楚为什么二者差异如此巨大,但是敝人推测,应该和流式处理有关。

还有,python的受众更多,具备强大的社区支持,现在所遇到的问题可能几年前就有类似的帖子,如果不做研究的话可能很难遇到一个前无古人的难题。R社区规模(群众基础)就小了很多,如果你不是用R做简单的统计而是做比较复杂的操作,可能CSDN、人大经济论坛之类的网站就满足不了你了,也许需要购买相关专业书籍,who knows?

对于计算机科学

对你们来说,学个语言很难吗?小孩子才做选择,老子全都要!

当然,要是想用R手撕代码做开发,抑或是造轮子,那我也只能说你想不开。

有一句话我印象特别深刻,R只能是R,不可能是别的东西,而python可以是你想要变成的任何东西。我觉得非常精辟,供参考。

总结

本文主要是考虑到大部分人时间有限,不可能处处精通;抑或是有燃眉之急、急需在R与python中做出抉择,才写的一篇“菜鸡导航文”,本来还想再比较一下他们的特点,如绘图之类的,后来一想,大部分已是老生常谈,前人已有较为完备的叙述,索性作罢。

希望对你们有所帮助。(以后也许还会再添一些,最近期末,不能浪太多,溜了)