当前位置: 首页 > news >正文

学数据分析/挖掘应该先学Python,还是R语言?

 

导读:学数据分析/挖掘应该先学哪门语言?大家在选择统计工具时,大多会在R语言、SPSS和SAS三者之间纠结。那为什么一般更爱选R语言呢?本文会给你答案。

作者:木羊同学

来源:华章计算机(ID:hzbook_jsj)

今天聊R语言。R语言的知名度很玄学,介乎于热门首选和无人知晓之间。你对R语言的印象,完全取决于你是谁,你问的是谁以及什么时候问。如果早个两三年,你问“学数据分析/挖掘应该先学哪门语言”,甚至问“学机器学习应该先学哪门语言”,至少有50%的概率会得到“R语言”的回答,而另外50%的概率,我以为你会猜是“Python”,其实更可能是“R语言现在是主流,不过现在Python的发展势头很强劲,通用性更好,建议学Python”。

不过,自从Python让深度学习奶了一口,这几年一飞冲天,在TIOBE排行榜把世界上最好的语言和C++都干翻了,你再问同样的问题,毫无疑问就是满屏幕地怒刷Python。但这不是唯一的答案,即使在Python优势很大的今天,你去问统计学家,回答可能是“工业界偏好Python,但搞研究还是喜欢用R”。

为什么,难道R有什么独特优势?

这就要从R语言究竟是什么说起。总的来说,R语言是一门专业的小众语言。别一看到小众,就觉得是三五个人躲到哪个荒岛上的那种自娱自乐,这里是“专业的小众”,是指一个职业化的专业群体,对,正是上面提到的统计学家。R语言最开始是统计学发明的,给统计学家使用的编程语言。

多说一点统计学。大家对于这个专业的看法这几年一直在变化。十年前,感觉统计学很远,对我这样的程序员来说,统计学就是拿着Excel划拉两下。哪怕后来到了“数据挖掘”“数据淘金”“大数据XX”之类的新词一波接着一波飞的年代,大多数程序员也只是关心底层,说的最多的还是Hadoop和Spark。但再后来一点,机器学习大热,热到什么程度呢,学计算机不学机器学习,四舍五入约等于没有学习。因此,R语言也随之变得大众了一点,这一点可以从TIOBE排行榜看出来,以前R语言都是20名开外,现在基本能稳定前十了,把苹果家的现任当家花旦Swift都甩在了身后。

等一下,感觉怎么像弯腰捡了下橡皮,就从此跟不上剧情了?这不奇怪,因为里面还有一段隐藏剧情。机器学习大家应该都很清楚,但统计学和机器学习的私生关系就不知道是否也一样清楚了。我写过一本机器学习书,叫《机器学习算法的数学解析与Python实现》,读过这本书应该知道,虽然光靠名字怎么也看不出来,但机器学习确实是统计学血缘意义上的亲儿子。我在书里提到一个问题,机器学习的教材一般有两种写法,一种偏数学理论,一种偏编程应用,导致学起来总会有一点撕裂的感觉。后面不展开了,这里要说的是,R语言在统计学界非常热门,而早期出版偏编程应用的机器学习教材,包括经典的那几本,很多都是统计出身的学者写的,所以翻开一看你会发现,选择使用的编程语言就是R语言,究其原因,正是因为R语言是统计学界的母语

当然了,统计学可不止R语言这一门语言,热门的还有SASSPSS。所以,大家在选择统计工具时,大多会在R语言、SPSS和SAS三者之间纠结。那为什么一般更爱选R语言呢,因为R语言有自己独特的两大优势。

第一,专业统计这个专业很有意思,专业性很强,但同时用途又很广。这就很容易让

人产生误会,隔壁阿猫阿狗整天都说在统计这个统计那个,感觉统计没什么难的。实际上,别看很多软件都自称统计软件,但实际上的差别,可能比海鲜大餐和海鲜大餐口味的泡面还要大。前面说到SPSS,对于非统计专业的人来说,SPSS已经很专业了,但其实SPSS之所以受欢迎,主要还是因为它比较简单,更像是一款办公软件,而非编程语言。所以,一般只对新人推荐用SPSS,真要往深了做专业的事,还得用R语言。

第二,开源免费。玩编程的同学可能感觉这简直是理所当然,但玩统计的感觉应该就大不一样。统计是专业性很强的行业,自然有很多非常专业的统计软件,但这些软件大多有一个共同特点,那就是都是要收钱,而且是要收很多很多很多的钱,开源免费可以说是异端。前面这个SAS就是特别典型的统计软件,强大专业,金融界都爱用它,但这个软件是既不开源又不免费,不但不免费,还轻轻松松就要花个上百万,差不多也只有金融界能用得起它,搞学术研究的穷孩子们自然更偏爱R语言,大概因为这个,R语言无论在TIOBE还是KDnuggets,都把SAS甩了一大截。

另外,有人认为R语言的开源也是一大优势,因为有活跃的开源社区作为强大驱动力,所以R语言的更新升级相比要快,尤其适合尝新。这一点我反倒觉得见仁见智,搞创新研究当然都喜欢新方法,但另一些行业,譬如说和钱打交道的行业,对于统计方法更看重的可能不是新,而是稳,需要经过实践反复检验成熟才敢用。这也是金融界喜欢选择SAS的主要原因。

最后,我们聊一下数据分析,也和Python比一比。Python有很多优点,R语言能做的统计分析和可视化,Python也能做,甚至很多人更推荐用Python做。我自己的日常工作主要就是用Python,觉得Python简直无所不能,常常还能带来惊喜。所以知道R语言以后,我最想了解的问题是,什么情况下应该选择R语言而不是Python呢?

答案还是上面的第一点,专业。数据分析大量使用统计工具,所以,你所使用的统计工具能力有限制,那你数据分析能够达到的水平也会受到限制。我们选择Python,而不是Java或者C++等其他主流的编程语言做数据分析,主要就是因为Python在数据分析方面的支持库能力强大。不过,这个强大也是相对而言的,编程语言也有个生态系统的概念,而R语言在统计方面的生态系统显然要比Python成熟很多,大家最直观的感受,应该是用R语言做可视化要比Python简单。毕竟这么多年,统计方面的课程都是用R语言教的,统计方面的论文都是用R语言做的,在这个方面,从工具资源到人的经验,R语言都要比Python丰富得多。就算Python现在又大红大紫,但对于统计知识丰富、但编程知识匮乏的专业人士来说,转学Python还是容易造成各种不适。

这个话题很有意思,我多说一点。我是亲眼见过统计圈子为“要不要转学Python编程语言做统计分析”交换了意见的,而且是充分地交换了意见。开始我不太理解,要我说干脆两个都学不就行了嘛。后来我才想明白,我是学计算机出身的,关注点在于“编程语言”,而对于学统计出身的同学,关注点则是“统计分析”,所以说的最多的一句话是“有这个时间浪费在学编程语言上,干嘛不多学一点统计分析的方法呢?”。大家计算时间成本的方式完全不同。所以我的看法是,不管这个争论最后结果怎样,R语言在过去、在现在,甚至会在将来的很长一段时间里,在比较统计工具的更多更新更丰富上面,R语言都要胜于Python的。

上面简要介绍了R语言的优点,应该也能解答你对统计工具选择的一些疑虑。不过,我并不喜欢武林大赛式的捧一个踩一个,工具分高下没有意义,合适才是最好的。如果上面说到的这几点正好是你看中的,那R语言应该就是你的首选了。学R语言有一点不同,R语言是专业领域的编程语言,这对于教材的编写要求很高,熟悉编程的作者不太熟统计,熟悉统计的作者又不太熟编程,泛泛而谈不难,但魔鬼都是藏在细节里。这里我推荐《R for Everyone》,机械工业出版社华章公司出版了中文版,叫《R语言:实用数据分析和可视化技术》,从R语言最基本的使用入门,到比较高级的统计工具运用,都介绍得比较清楚,许多初学者容易踩坑的细节都贴心地给出了提醒,R语言在统计方面当然也有很多支持包,这本书不但介绍了这些包,捋出了包的背景,还颇有趣味地提了一笔包开发者之间出现的“军备竞赛”,写得十分用心。

作者简介:

莫凡——新技术深度爱好者,曾经从事信息安全前沿技术跟踪研究和数据分析工作,在各类信息安全类技术期刊杂志发表文章五十余篇,现转为投身高端知识“白菜化”项目,希望能让将更多听起来高大上的名词沾一沾人间烟火,成为日常中生活真正用得上的知识,著有《机器学习算法的数学解析与Python实现》。个人公众号“睡前机器学习”,个人知乎号“木羊”。

RECOMMEND

推荐阅读

01

《机器学习算法的数学解析与Python实现》

莫凡 著

点击链接了解详情并购买

推荐语:从生活案例中理解算法,发现算法的乐趣,再把算法应用到机器学习中,让你零基础掌握算法精髓,快速进入人工智能开发领域。

02

《R语言:实用数据分析和可视化技术》

点击链接了解详情并购买

推荐语:本书主要介绍R语言中20%的核心功能,但是这20%的功能足以让你解决80%的现代数据分析。每章都是以基础知识开始,提供大量的实例和代码。你将学习下载和安装R语言;设置和使用R语言环境;掌握基本的程序编写,数据导入、操作和可视化。然后在此基础上构建完整的线性和非线性模型,学习数据挖掘技术。接着学习使用LaTeX、RMarkdown和Shiny等R语言包。

更多精彩回顾

书讯 | 5月书讯 | 华章IT图书上新啦!重磅新书在线投喂...
上新 | 周志华领衔撰写,历时4年,宝箱书问世!
书单 | 创建字节跳动之前,张一鸣读过哪些硬核技术书?

干货 | G1垃圾回收算法概述

收藏 | TIOBE 5月榜单:时隔五年,C语言重返第一

相关文章:

  • 未来已来,看智能制造如何改变世界 |《铸魂》线上新书发布会
  • 为什么腾讯监控的大数据平台选择了这款数据库?
  • 杭州某公司真实案例:7步搞定上云迁移
  • 机器学习「宝箱」中的「七种武器」:周志华领衔新书《机器学习理论导引》问世(赠书)...
  • 新生代的开源监控系统Prometheus,一线开发者教你如何活学活用
  • 大咖发声 | 数字化时代的利器-Python工具箱
  • 终于!《iOS 全埋点解决方案》正式出版
  • 如何在 K8s 上提供更加完善、高效的部署发布能力?
  • 6月书讯 (上)| 初夏已至,书香有约,六月宜静心读书
  • 极客手中的利器Electron
  • 推荐算法为啥这么“灵”,又为啥会“失灵”?
  • 一本书介绍Python信用风险量化术
  • 【第7期】深入HBase内核,剖析HBase数据库的基础理论与开发运维
  • 儿童节的今天,请收下这份“彩虹”书单
  • 六一特辑 | 经典少儿编程书单
  • Android Studio:GIT提交项目到远程仓库
  • Codepen 每日精选(2018-3-25)
  • const let
  • ECMAScript 6 学习之路 ( 四 ) String 字符串扩展
  • happypack两次报错的问题
  • JavaScript标准库系列——Math对象和Date对象(二)
  • leetcode388. Longest Absolute File Path
  • maven工程打包jar以及java jar命令的classpath使用
  • passportjs 源码分析
  • Spark RDD学习: aggregate函数
  • thinkphp5.1 easywechat4 微信第三方开放平台
  • vue从创建到完整的饿了么(11)组件的使用(svg图标及watch的简单使用)
  • Vue组件定义
  • 基于遗传算法的优化问题求解
  • 近期前端发展计划
  • 爬虫模拟登陆 SegmentFault
  • 如何使用 OAuth 2.0 将 LinkedIn 集成入 iOS 应用
  • 想写好前端,先练好内功
  • 携程小程序初体验
  • 格斗健身潮牌24KiCK获近千万Pre-A轮融资,用户留存高达9个月 ...
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • ​软考-高级-系统架构设计师教程(清华第2版)【第12章 信息系统架构设计理论与实践(P420~465)-思维导图】​
  • (33)STM32——485实验笔记
  • (4) PIVOT 和 UPIVOT 的使用
  • (C语言)字符分类函数
  • (ros//EnvironmentVariables)ros环境变量
  • (zhuan) 一些RL的文献(及笔记)
  • (附源码)php投票系统 毕业设计 121500
  • (过滤器)Filter和(监听器)listener
  • (免费分享)基于springboot,vue疗养中心管理系统
  • (太强大了) - Linux 性能监控、测试、优化工具
  • .NET Core 项目指定SDK版本
  • .NET 的静态构造函数是否线程安全?答案是肯定的!
  • .NET/C# 使用反射调用含 ref 或 out 参数的方法
  • /bin/bash^M: bad interpreter: No such file ordirectory
  • @staticmethod和@classmethod的作用与区别
  • [ vulhub漏洞复现篇 ] Apache APISIX 默认密钥漏洞 CVE-2020-13945
  • [AX]AX2012 R2 出差申请和支出报告
  • [CISCN 2019华东南]Web11
  • [github配置] 远程访问仓库以及问题解决