怎样才算精通R语言?

2020-06-16 00:00:00 数据 学习 语法 科学 熟练

作者:鲁伟

一个数据科学践行者的学习日记。数据挖掘与机器学习,R与Python,理论与实践并行。个人公众号:数据科学家养成记 (微信ID:louwill12)



几周前我曾写了一篇呼吁人们应该熟练掌握R语言的文章。基本的问题在于,如果你想像一名数据科学家一样工作的话,你必须掌握有关于数据科学的基本工具。一位读者在那篇文章下面留下了他的评论。老实说我是不愿看到这样的评论的,但不幸的是类似于这位读者的情况确实普遍存在。

这位读者的基本情况是这样,他学习过一门数据科学的在线课程,但仍然不会写代码:

“在edX上学习一门数据分析课程对我来说没问题,按照课程要求和指导进行学习,但正如你所说,从课程里实际上学到的或记住的内容微乎其微,因为我大多数时候都是在复制—粘贴代码。我近也尝试过自己做一些基本的分析,但确实是时隔太久,我已经啥都不会了。”

你的情况跟这位读者一样吗?

如果你志在成为一名数据科学家,并且也在学习在线课程和读一些数据教材,但后收效甚微的话,那你的学习就需要重新规划一下了。

你学习过多少在线课程?

你买过多少本数据科学书了?

在上完课程和买完书之后,你能在没有任何参考的情况下快速写出漂亮整洁的R代码吗?

... 或者是你现在正在谷歌里搜索怎样在R里面执行基本的数据科学技术?

你属于上面的哪种人?是一位熟练的R User 还是在努力地记住一些基础知识?如果你仍在努力写出流畅的代码,请继续往下看。


你能熟练操作R吗?

关于熟练的定义:

——能够以一种流利的方式准确快速并且自信地说出某种语言。

在非正式场合下,“熟练”广义上是指精通一门语言,而狭义上是指能够流畅地说一门语言,而不是磕磕巴巴的。

——维基词典

一直以来令我好奇的一点是为什么程序员和技术从业者们很少用到“熟练”这一概念。坦白地讲,“熟练”这一概念早已被内化到技术概念中去了,而这些技术都是你实现自我目标的基础。看完定义,要想称得上熟练的话,你必须能够做地专业、准确、快速和自信。

那你平时是怎样用R来写数据科学代码的?

在写代码的时候,你做到了专业、准确、快速而且又自信了吗?你是空手写出这些代码的吗?

抑或是你代码写地磕磕绊绊,漏洞百出?你能记住全部的代码语法规则吗?你会经常去读别人的代码吗?

诚实点,大兄弟。

你需要对自己诚实,因为作为数据科学家的你一旦有毛病的话,纠正这些毛病的方法就是对你的不足有清醒的认识,并促进自我提高。但现实情况在于很多数据科学专业的学生在一些基础技术能力上都不够扎实。需要说清楚的是,当我说“基本技术”指的并不是一些像机器学习、深度学习等等这样的前言技术。如果你是一名数据科学专业的菜鸟,机器学习对你来说有点困难这再正常不过。所以我所说的“基本技术”指的是数据处理、数据可视化以及数据分析。大多数数据科学专业的学生甚至是一些数据从业者们,都不能熟练地做到如上内容。

如果上面这些话听起来像是在说你,那你就需要重新考虑你的学习方式了。如果你不能熟练地操作像数据处理、数据可视化和数据分析这样的基础技能的话,你需要回头重新学习聚焦它们。

找到一份数据科学工作,保持一份数据科学工作,甚至是在数据科学岗位上出类拔萃,你都需要熟练掌握基本的数据科学技术。作为一名数据科学家,如果你不能熟练使用R(或者是其他数据科学语言),这就像一位为西班牙杂志写稿的专栏作家不能熟练说出西班牙语一样。


你的个里程碑:熟练掌握基础技术

志在数据科学家的你个真正的里程碑是用R将基本知识流利的实现一遍。说得更具体点就是,你需要用R熟练实现数据可视化,数据处理和数据分析。这些可都是基础内容,你理应做到专业、快速和准确,并且在脑海里记住。

如果你不能做到快速准确地从脑子记住这些技能的话,或许你可能就还没准备好成为一名真正的数据科学家。这就意味着,你还没为数据科学工作做好准备。所以你的个里程碑就是熟练掌握基本内容。



说白了就是,你需要“闭着眼睛”就能实现下面这些技能:

1. 数据可视化基础

—— 条形图

—— 折线图

—— 直方图

—— 散点图

—— 箱线图

—— 一些组合图形

2. 进阶的可视化内容

—— 调整图形颜色

—— 调整图形尺寸

—— 处理一些数据可视化的其他问题

—— 绘图格式

3. 数据处理

—— 数据集的读入(从文件读取或者调用)

—— 为数据集添加变量

—— 删除数据集中的变量

—— 整合归纳数据

—— ......

... 下面继续

上面的列表列出了一些简单的(不完全)你需要不假思索能够实现的内容。这些都是基本知识和工具。如果你不能做到熟练掌握,那你需要重新审视你的工作之道你会为止。


怎样做熟练掌握R?

熟练掌握R语言!听起来容易做起来难。这个道理想必大家都明白。

所以要怎样才能实现这个目标呢?

我之前也说过并且我将继续强调下去:

保持不断的练习

熟练使用R语言进行数据科学工作,你需要不断练习上述的基本技能。你需要不断地打磨这些能力,直到它们成为你的本能。仅仅是复制—粘贴完代码就说你已经学习过了那是远远不够的。仅仅看一些视频课程也是远远不够的。你需要明晰一点:视频学习确实是学习新东西的好方法,好的视频课程可以让你懂得原理,对于理解基本内容善莫大焉。然而,从演讲视频中学习技术与实践的、内化的技能是不一样的。很多人看完视频课或者听完讲座就说“很棒的课程,太有道理了,我明白了”,而实际上他们还没有实际操作过哪怕一次,所以他们从来都没有将知识内化为能力。过不了多久,大多数人都会忘记他们在视频课程学到的东西。因为他们缺乏实际的练习。

案例:学习R就像在学习一门外语

就像我之前提到的一样,学习R语言就像是学习一门外语,比如说西班牙语。我们就拿西班牙语说事好了,假设你现在正在学习西班牙语。某天你在课堂上学到了一些语法,并且当时很好地理解了这些语法。因为你“理解”了这些语法,你大可以简单地使用这些语法结构。你大概在下课后的一段时间内都会使用。然后放学回家后你不再练习这些语法了,大概一周之后,你还能记得怎样使用这些语法吗?对于这些语法你还有多少熟练度可言呢?我跟你打个赌:如果你下课之后不去练习这点语法知识,你肯定很快就会忘记。

背外语词汇也是同样的道理。要想记住那些单词,仅靠一次学习肯定是行不通的。我相信你一定有相关经历。当你学了一个西班牙单词“猫”并且能够记住一段时间,但如果你不及时巩固练习的话,你过不了多久就会忘得一干二净。

如果你学习外语语法和单词并且想长期记住它们,那你需要反复不断的练习。你需要不断打磨。学习单词的好方法就是学完之后反复练习一段时间。

相信你已经明白了。学习编程语言跟学习外语都是一个套路。学习和记住编程语法,你需要不断地练习。你需要不断地打磨基本“词汇”和编程语法直到你可以不假思索的调用它们。

如果你做到了这些,做到了学会了基本语法并且反复练习到了可以快速流利地写出来...这样你就会实现熟练二字的真谛。再强调一次:明确哪些是基础技能然后残酷地去练习吧!



在R里面学会基础技能需要多久?

你可能会问,学会这些所谓的基础技能要花多长时间。实际上这取决于你的学习质量。学习这种事情本身就是一个技术活。如果你不知道怎样练习,那学会这些可能需要数年时间。我认识一些人几年前就开始学习R了,但到现在都不能写一手流利的代码,他们买来一大堆书,但仍然写不好代码的原因就在于他们很少进行实际的练习。就像学习外语一样,我也认识有些人学了好几年西班牙语到现在还不能用它进行交流。这也是你的学习风险之一,要精通R可能要花费你多年时间。甚至更糟糕的是你可能后啥也没学会。

关键的问题在于大多数在线课程都不会给你展示它们是怎样练习的。它们可能会向你解释语法规则和工作原理,但它们不会向你展示怎样精通R的练习过程。当然,对你来说也有一些好消息。如果你知道怎样练习编程语言,你大概只需要6周时间就可以熟练掌握R语言的基本数据科学技术。我不想在这里谈太多,但如果你知道怎样把控你的记忆力,我想你会很快就学会R。从本质上讲,你需要确切地知道如何练习获得大的收益和效率。

如果你知道如何做到这一点,并且你每天都在努力练习,那么在6-8周内掌握R的基础技术是极有可能的。(事实上,如果你学习欲望够强的话,你可能比这速度还要快。)



掌握基础技能是成为数据科学家的前提

我坚信成为一名成功的数据科学家,你需要做到毫无争议的熟练度。你需要快速、无意识地掌握R中数据科学的基本语法和技术。这需要反复的练习。如果你想成为一名数据科学家,这里是我的建议,学习并打磨下面这些R包的技能:

• ggplot2

• dplyr

• tidyr

• lubridate

• stringr

• forcats

• readr

这些包为你提供了数据处理、数据清洗、数据可视化和数据分析的基本工具。如果您能够熟练地使用这些,你将拥有在入门级完成这些工作所需的所有工具。你会上手自己的数据科学项目,你也会参与更深一步的数据科学领域的学习,更重要的是,你会成为一名数据科学大咖。

相关文章