题图:Photo by Myriam Jessier on Unsplash

痛点

总有小伙伴留言或私信问我:

王老师,我没有基础,想要入门数据科学的话,上某某辅导班(收费 XXXX 元),靠谱不?

这问题,还真是不好回答。因为那样的辅导班,我没上过,着实不知道质量如何,不敢妄下判断。

想跨专业系统学习数据科学知识,除了辅导班会让你挑花眼以外,书籍、资料和网上的学习资源也不好挑选。因为数据科学知识技能的特色是发展迅速。一年多以前别人使用某个方法、模型做出的结果,还能发在高水平期刊上。今天你使用同样的方法,却可能会被无情拒稿。这不完全是你的错,只是在这么短的时间里更好的模型已经出现了。你学到的内容嘛,很不幸,落伍了。

那你的下一个问题应该是:

有没有足够省钱,还能随时更新保持追上前沿的学习资料?

这听着很贪心。真有人告诉这样的好事儿,你也会怀疑他是不是个骗子。但实话实说,这样的免费学习资料还真的有,而且一直被很多初学者忽视掉了。因为它并不存在于某个知名的 MOOC 平台上,而是寄身于一个数据科学竞赛网站的角落里。

人们的刻板印象会认为,只有知识技能掌握足够好才会去参加竞赛,因此并不期待竞赛网站会负责详细介绍基础入门知识。这可能让很多人与它失之交臂。

这个竞赛网站,叫做 Kaggle 。这套课程,叫做 Kaggle Courses 。

发现

我最初发现 Kaggle 的这一套自制课程,是在 2018 年 4 月份。之所以还能知道具体的时间,是因为我当时做了笔记。

你看,随手及时记录笔记,很重要吧?

当时 Kaggle 自制课程的名称,还叫做 "Kaggle Learn" 。初始课程的门数很少,只有 6 门。

但是早在 2018 年,我就觉得 Kaggle 这个课程很有特色,所以才专门记录了笔记。什么特色呢?至少包括以下两点:

以其中数据可视化教学内容为例。这一部分介绍的 Python 可视化工具,是 Seaborn 。

今天 Seaborn 的学习资料早已到处都是,并不稀奇。但是在 2018 年初,更多的常见数据科学教程依然沿用 matplotlib 这样的 Python 基础绘图软件包。使用起来,较为繁琐。而借助 Seaborn ,你可以用非常简单的语句,生成很复杂的印刷级别图形。我在 2018 年的这则笔记里,还专门保留了几张截图,作为例子。

这是普通的变量分布图:

这个图可以同时描述两个变量分布和二者的关联:

上面这些图,都可以用 Seaborn 非常容易做出来。

况且,彼时 Kaggle Learn 可视化部分的课程,已不仅仅局限于 Seaborn ,也包括 plotly ,用于做交互图形。这是当时课程里面的截图:

你不难看到,Plotly 可以很方便做出这种三维图像。你还可以通过拖动从不同角度进行观察。

当时由于课程数量不多,并没有引起我的重视。但我当初学习这些资料的进程,直到现在还原原本本保留在了 Kaggle 系统中。

变化

常言道,「士别三日,当刮目相看」。Kaggle 的课程板块也是如此。

前些日子,我想给学生找一个免费运行的 GPU 云环境,用来讲授机器学习,于是又打开了 Kaggle 网站。我突然发现,原先的 Kaggle Learn 已经大幅度扩容,成长为 Kaggle 里面的一个单独的 Courses (课程)板块。你可以 点击这个链接直达。

可以看到,现在课程包含的主题种类非常丰富。

这是个不完全的课程列表,里面就已经包括了:

样例

这里我以 Python 数据框 Pandas 教程为例,给你介绍一下 Kaggle Courses 的特色。

这里 Pandas 的介绍分成 6 个部分:

可以看出,内容是很精细、系统和全面的。这样循序渐进的好处,是避免一次性让初学者接触过多的概念和知识,导致学习的时候「按下葫芦起了瓢」,手忙脚乱。先解决基础问题,再逐步试探进入更复杂的部分,这和《新概念英语》的理念「逐步迭代 + 高水平重复」是一致的。

每一个模块,都分为讲解和练习两个部分。

讲解里面,都包含了文字、图片、代码,以及对应的运行结果。

而练习里,因为使用了 learntools 这个软件包,所以 Kaggle 平台可以自动给你提示、参考答案,甚至判定你自己输入的语句答案是否正确。

代码运行正确,提示是这样的:

而如果运行出现错误, Kaggle 会给出具体的错误原因:

请注意,对初学者来说,这是非常宝贵的反馈。因为有了反馈,有了提示,你修改起来就有了正确方向,事半功倍。极大程度避免了初学者面对错误瞎猜乱改导致的精力耗尽,甚至「从入门到放弃」

即便你的答案运行出来正确的结果,你也可以看看自己的解答和参考答案之间的差别。正确答案,不止一种,执行效率上也有高下之分。这种对比也是重要的学习提升途径

我在《MOOC教学,什么最重要?》一文中,给你提到过,MOOC 教学里面,最宝贵的就是反馈。课程讲义、录像可以大规模低成本复制传播,但是反馈却需要个性化,这也是课程规模和质量之间经常发生矛盾和冲突的地方。而对于写代码这种事情来说,如果能够充分利用目前的自动化技术,是可以给初学者足够丰富反馈的。这也是数据科学和编程类内容学习的一种独特优势。

其他

下面我们来看看 Kaggle Courses 其他的特色板块。篇幅所限,我这里精选了几样,包括:

先说数据可视化。你会发现,Seaborn 确实历久弥新。现在依然是 Kaggle 讲解可视化的软件包首选。

只是从内容上,比起当初更为细致多样。我也准备抽时间系统学习一下。回头给你分享一下相关的经验。

除了 Seaborn 和 plotly 之外,数据可视化部分还添加了「地理信息可视化」。你可以用几行代码,就把各种数据叠加在地图层上,让读者一目了然。

你还可以把地图做成交互形式,读者可以根据自己的喜好,进行交互式缩放,就像这样。

除了可视化之外,我觉得时间序列分析也值得说一说。

毕竟,除了面板数据(例如购物记录、评论信息)之外,我们还时常要与时间序列打交道。例如我之前给你介绍过的《如何用 Python 做舆情时间序列可视化?》,就可以做出类似这样的情感指标时间序列可视化。

从前处理时间序列数据,还是比较麻烦的。而现在,因为有了更成熟的软件包,你可以用更少的代码,就把时间序列的清洗和可视化搞定。

使用时间序列,我们往往都是有趋势预测的需求的。预测可以使用一些传统的算法,或者也可以利用机器学习。就像我在《如何用 Python 和循环神经网络预测严重交通拥堵?》一文给你举过的例子。

下图是 Kaggle Courses 里面 预测流感数据的例子

你觉得这样数据的建模、预测和可视化需要多少行代码?200?500?

其实,核心代码只有这些:

全部的代码,都有配套的讲解。一步步通过中间结果,教给你怎么做,让你有充分的铺垫知识来逐步学习掌握。

通过样例学习之后,相信你已经信心满满。此时可以根据引导,在 练习区实际上手了

这套 Kaggle 课程最让我欣喜的地方,是专门的 AI 伦理部分。

这几年出现的很多 AI 领域新闻,都让人们逐步认识到 AI 伦理问题的重要性和严重性。简而言之,如果人们放任 AI 研究「自由飞翔」,那么在短时间内,我们就会品尝到恶果。例如,我们会因为长相、基因、社会经济地位等因素,受到机器模型的歧视甚至鄙视。那些科幻作品中,人类饱受机器欺凌乃至奴役的场面,会变成活生生的现实。

机器本身没有善恶可言,因为它只是由人塑造的。但是对于数据科学的应用者来说, AI 伦理特别重要。如果不在学习阶段加以培养,就如同驾校培训了驾车技术,却没有讲授交通规则。他开车上路,手里握着的就不是方向盘,而是致命武器的扳机。

初心

我给你如此详细介绍这套课程,是因为它完全免费,而且还可以提供学习证书。这种分享的精神,也需要你我的分享,来薪火相传。

我一直在琢磨,研发这些课程,撰写配套练习,并且对答案进行完善调试,还得不断因应环境变化调整课程内容,难道不需要成本吗?Kaggle 这么做,岂非赔本儿赚吆喝?图什么?

况且,这还不是 Kaggle 做的唯一「傻事儿」。别忘了,我这次打开 Kaggle ,其实就是想帮助自己的学生,用它上面的免费 GPU 时长,以及上面大量的开放数据资源。这些其实都是要由 Kaggle 负担成本的。

后来,我大概想明白了。Kaggle 这些看似「冒傻气」的行为,实际上是在完成一个闭环。作为一个数据科学比赛的网站,Kaggle 需要数据,需要算力,需要题目,但是更需要「人」,也就是足够多的参与者。不是每一个来到这个网站的用户,都具备数据科学基础知识。但是他们中的很多人,却有非常可观的潜力值得发掘。

做一套课程出来,确实需要耗费不少成本。但是如果这套课程可以让初学者快速上手,掌握入门内容,那么他们做出来的比赛结果,就更值得期待。参与者整体水平的快速提升,对于这样一个网站,一个社区,是有显著的好处 —— 生态系统级别的。

小结

想明白这一层之后,我觉得可以更为大胆地将这套 Kaggle 数据科学课程推荐给你。因为它是经过许许多多初学者实践、反馈和迭代的成果,因而质量上更有保障。

希望这个推荐,能够让你在入门数据科学的道路上,少走几分弯路,多一些成就感。

你觉得这套课程怎么样?有没有更好的数据科学入门资源可以分享给大伙儿?欢迎留言,咱们一起交流讨论。

如果你觉得本文有用,请充电

如果本文可能对你的朋友有帮助,请转发给他们。

欢迎关注我的专栏「科研利器」,以便及时收到后续的更新内容。

延伸阅读

贷还是不贷:如何用 Python 和机器学习帮你决策?

想打造个性化高效工作流,可不会编程怎么办?

《数亦有道》配套代码云端迁移进展

世界很大,英语不好的你如何去看看?

践行「重器轻用」,你的知识管理流程用了哪些工具组合呢?