题图:Photo by Myriam Jessier[1] on Unsplash[2]
痛点
总有小伙伴留言或私信问我:
王老师,我没有基础,想要入门数据科学的话,上某某辅导班(收费 XXXX 元),靠谱不?
这问题,还真是不好回答。因为那样的辅导班,我没上过,着实不知道质量如何,不敢妄下判断。
想跨专业系统学习数据科学知识,除了辅导班会让你挑花眼以外,书籍、资料和网上的学习资源也不好挑选。因为数据科学知识技能的特色是发展迅速。一年多以前别人使用某个方法、模型做出的结果,还能发在高水平期刊上。今天你使用同样的方法,却可能会被无情拒稿。这不完全是你的错,只是在这么短的时间里更好的模型已经出现了。你学到的内容嘛,很不幸,落伍了。
那你的下一个问题应该是:
有没有足够省钱,还能随时更新保持追上前沿的学习资料?
这听着很贪心。真有人告诉这样的好事儿,你也会怀疑他是不是个骗子。但实话实说,这样的免费学习资料还真的有,而且一直被很多初学者忽视掉了。因为它并不存在于某个知名的 MOOC 平台上,而是寄身于一个数据科学竞赛网站的角落里。
人们的刻板印象会认为,只有知识技能掌握足够好才会去参加竞赛,因此并不期待竞赛网站会负责详细介绍基础入门知识。这可能让很多人与它失之交臂。
这个竞赛网站,叫做 Kaggle 。这套课程,叫做 Kaggle Courses 。
发现
我最初发现 Kaggle 的这一套自制课程,是在 2018 年 4 月份。之所以还能知道具体的时间,是因为我当时做了笔记。
![39f9802c76264e2efa0d1481c6064a0b.png](https://i-blog.csdnimg.cn/blog_migrate/12d4b888898f9ee0dfed78a6b6d0d238.png)
你看,随手及时记录笔记,很重要吧?
当时 Kaggle 自制课程的名称,还叫做 "Kaggle Learn" 。初始课程的门数很少,只有 6 门。
![7de33b556b38e87c28703430867aa760.png](https://i-blog.csdnimg.cn/blog_migrate/35f583ce96fa2f8d74944b53fbee413f.png)
但是早在 2018 年,我就觉得 Kaggle 这个课程很有特色,所以才专门记录了笔记。什么特色呢?至少包括以下两点:
全免费
利用 Notebook 互动实例来讲解
以其中数据可视化教学内容为例。这一部分介绍的 Python 可视化工具,是 Seaborn 。
今天 Seaborn 的学习资料早已到处都是,并不稀奇。但是在 2018 年初,更多的常见数据科学教程依然沿用 matplotlib 这样的 Python 基础绘图软件包。使用起来,较为繁琐。而借助 Seaborn ,你可以用非常简单的语句,生成很复杂的印刷级别图形。我在 2018 年的这则笔记里,还专门保留了几张截图,作为例子。
这是普通的变量分布图:
![66ed61a83afda8d3c9dd7e3f9b21a266.png](https://i-blog.csdnimg.cn/blog_migrate/889b1a090870d7f8dbc0919e2788e795.png)
这个图可以同时描述两个变量分布和二者的关联:
![dcdd83968b5c7ba82de07ccfbd1c3616.png](https://i-blog.csdnimg.cn/blog_migrate/fb9f282388237dcd8d9cd1eea32ac0a0.png)
上面这些图,都可以用 Seaborn 非常容易做出来。
况且,彼时 Kaggle Learn 可视化部分的课程,已不仅仅局限于 Seaborn ,也包括 plotly ,用于做交互图形。这是当时课程里面的截图:
![6f949fcad498dcb65e6d15c5e729db1e.png](https://i-blog.csdnimg.cn/blog_migrate/d1f8580bc03706e751bb05fb13347ad1.png)
你不难看到,Plotly 可以很方便做出这种三维图像。你还可以通过拖动从不同角度进行观察。
当时由于课程数量不多,并没有引起我的重视。但我当初学习这些资料的进程,直到现在还原原本本保留在了 Kaggle 系统中。
![63aa7ecba04325c6be60138a1ac1e617.png](https://i-blog.csdnimg.cn/blog_migrate/4971722adcf6b49cd6e572b9bce72023.png)
变化
常言道,「士别三日,当刮目相看」。Kaggle 的课程板块也是如此。
前些日子,我想给学生找一个免费运行的 GPU 云环境,用来讲授机器学习,于是又打开了 Kaggle 网站。我突然发现,原先的 Kaggle Learn 已经大幅度扩容,成长为 Kaggle 里面的一个单独的 Courses (课程)板块。你可以 点击这个链接[3] 直达。
![02c55602c08e13cbddd1b059213a8ab0.png](https://i-blog.csdnimg.cn/blog_migrate/ffeee683c1d2e9e15d739a7d37c6369c.png)
可以看到,现在课程包含的主题种类非常丰富。
![dc1ff29281e57e958d9e6bfff5b725fd.png](https://i-blog.csdnimg.cn/blog_migrate/85b089c42580d6beee4e960a2a69f12a.png)
这是个不完全的课程列表,里面就已经包括了:
编程基础
机器学习
特征工程
SQL 数据库
机器视觉
......
样例
这里我以 Python 数据框 Pandas 教程为例,给你介绍一下 Kaggle Courses 的特色。
![d3efe5d7235c4a725adacf5366622356.png](https://i-blog.csdnimg.cn/blog_migrate/58015bbc423c20118531a5eb85b3f386.png)
这里 Pandas 的介绍分成 6 个部分:
创建、读写
索引、选择和赋值
总结与映射
分组和排序
数据类型与缺失值
重命名和合并数据框
可以看出,内容是很精细、系统和全面的。这样循序渐进的好处,是避免一次性让初学者接触过多的概念和知识,导致学习的时候「按下葫芦起了瓢」,手忙脚乱。先解决基础问题,再逐步试探进入更复杂的部分,这和《新概念英语》的理念「逐步迭代 + 高水平重复」是一致的。
每一个模块,都分为讲解和练习两个部分。
![07273071ed9fcb20e342fe3a57b684e8.png](https://i-blog.csdnimg.cn/blog_migrate/659824e4404453ccefd9f60d9ce82fbd.png)
讲解里面,都包含了文字、图片、代码,以及对应的运行结果。
而练习里,因为使用了 learntools[4] 这个软件包,所以 Kaggle 平台可以自动给你提示、参考答案,甚至判定你自己输入的语句答案是否正确。
![143b697552006c197dab542721facbb6.png](https://i-blog.csdnimg.cn/blog_migrate/b421fd46789c20d7d39f4bd6272b0233.png)
代码运行正确,提示是这样的:
![d392361a729d17a6850926a63dc1ae51.png](https://i-blog.csdnimg.cn/blog_migrate/bb8af17c77d6c03890b479e51df0809f.png)
而如果运行出现错误, Kaggle 会给出具体的错误原因:
![559a9761c231e0f6f711bb57223f094c.png](https://i-blog.csdnimg.cn/blog_migrate/6474036f30ce557e77088f6d389cb7ed.png)
请注意,对初学者来说,这是非常宝贵的反馈。因为有了反馈,有了提示,你修改起来就有了正确方向,事半功倍。极大程度避免了初学者面对错误瞎猜乱改导致的精力耗尽,甚至「从入门到放弃」。
即便你的答案运行出来正确的结果,你也可以看看自己的解答和参考答案之间的差别。正确答案,不止一种,执行效率上也有高下之分。这种对比也是重要的学习提升途径。
![64d41cf218badac3e1195f4db132df55.png](https://i-blog.csdnimg.cn/blog_migrate/9c091d046194dc04f7f5d87eb5adc215.png)
我在《MOOC教学,什么最重要?》一文中,给你提到过,MOOC 教学里面,最宝贵的就是反馈。课程讲义、录像可以大规模低成本复制传播,但是反馈却需要个性化,这也是课程规模和质量之间经常发生矛盾和冲突的地方。而对于写代码这种事情来说,如果能够充分利用目前的自动化技术,是可以给初学者足够丰富反馈的。这也是数据科学和编程类内容学习的一种独特优势。
其他
下面我们来看看 Kaggle Courses 其他的特色板块。篇幅所限,我这里精选了几样,包括:
数据可视化
时间序列
AI 伦理
先说数据可视化。你会发现,Seaborn 确实历久弥新。现在依然是 Kaggle 讲解可视化的软件包首选。
![c47066c20c30d21e27a3ce1467fde0ed.png](https://i-blog.csdnimg.cn/blog_migrate/fd6d02b84357a759996d916eec9657a0.png)
只是从内容上,比起当初更为细致多样。我也准备抽时间系统学习一下。回头给你分享一下相关的经验。
除了 Seaborn 和 plotly 之外,数据可视化部分还添加了「地理信息可视化」。你可以用几行代码,就把各种数据叠加在地图层上,让读者一目了然。
![799aa749ab1e9acc8238d1a84503864d.png](https://i-blog.csdnimg.cn/blog_migrate/7944cf5da84be69ca88887d7e65c0434.png)
你还可以把地图做成交互形式,读者可以根据自己的喜好,进行交互式缩放,就像这样。
除了可视化之外,我觉得时间序列分析也值得说一说。
毕竟,除了面板数据(例如购物记录、评论信息)之外,我们还时常要与时间序列打交道。例如我之前给你介绍过的《如何用 Python 做舆情时间序列可视化?》,就可以做出类似这样的情感指标时间序列可视化。
![294f73c61b9507dc1387b41478c01d3b.png](https://i-blog.csdnimg.cn/blog_migrate/9ae1a3d3a31a55b8cecee70397a90299.png)
从前处理时间序列数据,还是比较麻烦的。而现在,因为有了更成熟的软件包,你可以用更少的代码,就把时间序列的清洗和可视化搞定。
![d6cf5079ca91df9dcd7b88c4d45e0fcf.png](https://i-blog.csdnimg.cn/blog_migrate/a29604771a60b3d64e719a4b41af9e7c.png)
使用时间序列,我们往往都是有趋势预测的需求的。预测可以使用一些传统的算法,或者也可以利用机器学习。就像我在《如何用 Python 和循环神经网络预测严重交通拥堵?》一文给你举过的例子。
下图是 Kaggle Courses 里面 预测流感数据的例子[5]。
![8848bf52a567647a0bb7e35d60b47904.png](https://i-blog.csdnimg.cn/blog_migrate/65fc95a20209fe50041fb910a29adde7.png)
你觉得这样数据的建模、预测和可视化需要多少行代码?200?500?
其实,核心代码只有这些:
![99adf2d3531b1e20aebee24f15decb8c.png](https://i-blog.csdnimg.cn/blog_migrate/4167c2534b89a3a9bb50ee2d3789ad6f.png)
全部的代码,都有配套的讲解。一步步通过中间结果,教给你怎么做,让你有充分的铺垫知识来逐步学习掌握。
通过样例学习之后,相信你已经信心满满。此时可以根据引导,在 练习区实际上手了[6]。
![7190921774f32ea6d6da3da2f0edc4bb.png](https://i-blog.csdnimg.cn/blog_migrate/af33eb1b27caf6e38e2bd1042d51c1d4.png)
这套 Kaggle 课程最让我欣喜的地方,是专门的** AI 伦理**部分。
![8cc16fc3aa08a330e114d2855a963323.png](https://i-blog.csdnimg.cn/blog_migrate/96c24c84d2dd63085191985a5628fbef.png)
这几年出现的很多 AI 领域新闻,都让人们逐步认识到 AI 伦理问题的重要性和严重性。简而言之,如果人们放任 AI 研究「自由飞翔」,那么在短时间内,我们就会品尝到恶果。例如,我们会因为长相、基因、社会经济地位等因素,受到机器模型的歧视甚至鄙视。那些科幻作品中,人类饱受机器欺凌乃至奴役的场面,会变成活生生的现实。
机器本身没有善恶可言,因为它只是由人塑造的。但是对于数据科学的应用者来说, AI 伦理特别重要。如果不在学习阶段加以培养,就如同驾校培训了驾车技术,却没有讲授交通规则。他开车上路,手里握着的就不是方向盘,而是致命武器的扳机。
初心
我给你如此详细介绍这套课程,是因为它完全免费,而且还可以提供学习证书。这种分享的精神,也需要你我的分享,来薪火相传。
![205e9fcdd05b4b09fa85053a9d791f9d.png](https://i-blog.csdnimg.cn/blog_migrate/19d8067e98d6b9c31d329b9a872b6fbc.png)
我一直在琢磨,研发这些课程,撰写配套练习,并且对答案进行完善调试,还得不断因应环境变化调整课程内容,难道不需要成本吗?Kaggle 这么做,岂非赔本儿赚吆喝?图什么?
况且,这还不是 Kaggle 做的唯一「傻事儿」。别忘了,我这次打开 Kaggle ,其实就是想帮助自己的学生,用它上面的免费 GPU 时长,以及上面大量的开放数据资源。这些其实都是要由 Kaggle 负担成本的。
后来,我大概想明白了。Kaggle 这些看似「冒傻气」的行为,实际上是在完成一个闭环。作为一个数据科学比赛的网站,Kaggle 需要数据,需要算力,需要题目,但是更需要「人」,也就是足够多的参与者。不是每一个来到这个网站的用户,都具备数据科学基础知识。但是他们中的很多人,却有非常可观的潜力值得发掘。
做一套课程出来,确实需要耗费不少成本。但是如果这套课程可以让初学者快速上手,掌握入门内容,那么他们做出来的比赛结果,就更值得期待。参与者整体水平的快速提升,对于这样一个网站,一个社区,是有显著的好处 —— 生态系统级别的。
小结
想明白这一层之后,我觉得可以更为大胆地将这套 Kaggle 数据科学课程推荐给你。因为它是经过许许多多初学者实践、反馈和迭代的成果,因而质量上更有保障。
希望这个推荐,能够让你在入门数据科学的道路上,少走几分弯路,多一些成就感。
你觉得这套课程怎么样?有没有更好的数据科学入门资源可以分享给大伙儿?欢迎留言,咱们一起交流讨论。
感觉有用的话,点赞 +「在看」,把它转发给你身边有需要的朋友。
请订阅我的微信公众号,加星标,避免错过新推送提示。
欢迎关注我的视频号,时常更新。
欢迎来知识星球,查看已经积累下的数十篇精华帖子。更欢迎你提出自己的好问题。
由于微信公众平台的限制,文中部分链接可能无法正常显示与跳转。如需访问,请点击文末「阅读原文」链接,查看链接齐备的版本。
延伸阅读
参考资料
[1]
Myriam Jessier: https://unsplash.com/@mjessier?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText
[2]Unsplash: https://unsplash.com/s/photos/data-science?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText
[3]点击这个链接: https://www.kaggle.com/learn
[4]learntools: https://github.com/Kaggle/learntools
[5]预测流感数据的例子: https://www.kaggle.com/code/ryanholbrook/forecasting-with-machine-learning
[6]练习区实际上手了: https://www.kaggle.com/kernels/fork/20667477