如何免费系统化入门数据科学?-程序员宅基地

技术标签: python  可视化  机器学习  编程语言  人工智能  

d88c9b367cde44ecfe1c7878b24bfa55.jpeg

题图:Photo by Myriam Jessier[1] on Unsplash[2]

痛点

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

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

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

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

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

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

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

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

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

发现

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

39f9802c76264e2efa0d1481c6064a0b.png

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

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

7de33b556b38e87c28703430867aa760.png

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

  • 全免费

  • 利用 Notebook 互动实例来讲解

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

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

这是普通的变量分布图:

66ed61a83afda8d3c9dd7e3f9b21a266.png

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

dcdd83968b5c7ba82de07ccfbd1c3616.png

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

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

6f949fcad498dcb65e6d15c5e729db1e.png

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

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

63aa7ecba04325c6be60138a1ac1e617.png

变化

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

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

02c55602c08e13cbddd1b059213a8ab0.png

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

dc1ff29281e57e958d9e6bfff5b725fd.png

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

  • 编程基础

  • 机器学习

  • 特征工程

  • SQL 数据库

  • 机器视觉

  • ......

样例

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

d3efe5d7235c4a725adacf5366622356.png

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

  • 创建、读写

  • 索引、选择和赋值

  • 总结与映射

  • 分组和排序

  • 数据类型与缺失值

  • 重命名和合并数据框

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

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

07273071ed9fcb20e342fe3a57b684e8.png

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

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

143b697552006c197dab542721facbb6.png

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

d392361a729d17a6850926a63dc1ae51.png

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

559a9761c231e0f6f711bb57223f094c.png

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

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

64d41cf218badac3e1195f4db132df55.png

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

其他

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

  • 数据可视化

  • 时间序列

  • AI 伦理

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

c47066c20c30d21e27a3ce1467fde0ed.png

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

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

799aa749ab1e9acc8238d1a84503864d.png

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

99c1b094262b5e610c878ea47a73c6b4.png


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

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

294f73c61b9507dc1387b41478c01d3b.png

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

d6cf5079ca91df9dcd7b88c4d45e0fcf.png

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

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

8848bf52a567647a0bb7e35d60b47904.png

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

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

99adf2d3531b1e20aebee24f15decb8c.png

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

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

7190921774f32ea6d6da3da2f0edc4bb.png

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

8cc16fc3aa08a330e114d2855a963323.png

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

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

初心

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

205e9fcdd05b4b09fa85053a9d791f9d.png

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

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

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

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

小结

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

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

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

感觉有用的话,点赞 +「在看」,把它转发给你身边有需要的朋友。

订阅我的微信公众号,加星标,避免错过新推送提示。


欢迎关注我的视频号,时常更新。

91d9f32f8e4019550189f51ed6fe57cd.jpeg

欢迎来知识星球,查看已经积累下的数十篇精华帖子。更欢迎你提出自己的好问题。

df8f104c4534999a29dbeaad192da424.jpeg

由于微信公众平台的限制,文中部分链接可能无法正常显示与跳转。如需访问,请点击文末「阅读原文」链接,查看链接齐备的版本。 

延伸阅读

参考资料

[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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/nkwshuyi/article/details/125650298

智能推荐

oracle 12c 集群安装后的检查_12c查看crs状态-程序员宅基地

文章浏览阅读1.6k次。安装配置gi、安装数据库软件、dbca建库见下:http://blog.csdn.net/kadwf123/article/details/784299611、检查集群节点及状态:[root@rac2 ~]# olsnodes -srac1 Activerac2 Activerac3 Activerac4 Active[root@rac2 ~]_12c查看crs状态

解决jupyter notebook无法找到虚拟环境的问题_jupyter没有pytorch环境-程序员宅基地

文章浏览阅读1.3w次,点赞45次,收藏99次。我个人用的是anaconda3的一个python集成环境,自带jupyter notebook,但在我打开jupyter notebook界面后,却找不到对应的虚拟环境,原来是jupyter notebook只是通用于下载anaconda时自带的环境,其他环境要想使用必须手动下载一些库:1.首先进入到自己创建的虚拟环境(pytorch是虚拟环境的名字)activate pytorch2.在该环境下下载这个库conda install ipykernelconda install nb__jupyter没有pytorch环境

国内安装scoop的保姆教程_scoop-cn-程序员宅基地

文章浏览阅读5.2k次,点赞19次,收藏28次。选择scoop纯属意外,也是无奈,因为电脑用户被锁了管理员权限,所有exe安装程序都无法安装,只可以用绿色软件,最后被我发现scoop,省去了到处下载XXX绿色版的烦恼,当然scoop里需要管理员权限的软件也跟我无缘了(譬如everything)。推荐添加dorado这个bucket镜像,里面很多中文软件,但是部分国外的软件下载地址在github,可能无法下载。以上两个是官方bucket的国内镜像,所有软件建议优先从这里下载。上面可以看到很多bucket以及软件数。如果官网登陆不了可以试一下以下方式。_scoop-cn

Element ui colorpicker在Vue中的使用_vue el-color-picker-程序员宅基地

文章浏览阅读4.5k次,点赞2次,收藏3次。首先要有一个color-picker组件 <el-color-picker v-model="headcolor"></el-color-picker>在data里面data() { return {headcolor: ’ #278add ’ //这里可以选择一个默认的颜色} }然后在你想要改变颜色的地方用v-bind绑定就好了,例如:这里的:sty..._vue el-color-picker

迅为iTOP-4412精英版之烧写内核移植后的镜像_exynos 4412 刷机-程序员宅基地

文章浏览阅读640次。基于芯片日益增长的问题,所以内核开发者们引入了新的方法,就是在内核中只保留函数,而数据则不包含,由用户(应用程序员)自己把数据按照规定的格式编写,并放在约定的地方,为了不占用过多的内存,还要求数据以根精简的方式编写。boot启动时,传参给内核,告诉内核设备树文件和kernel的位置,内核启动时根据地址去找到设备树文件,再利用专用的编译器去反编译dtb文件,将dtb还原成数据结构,以供驱动的函数去调用。firmware是三星的一个固件的设备信息,因为找不到固件,所以内核启动不成功。_exynos 4412 刷机

Linux系统配置jdk_linux配置jdk-程序员宅基地

文章浏览阅读2w次,点赞24次,收藏42次。Linux系统配置jdkLinux学习教程,Linux入门教程(超详细)_linux配置jdk

随便推点

matlab(4):特殊符号的输入_matlab微米怎么输入-程序员宅基地

文章浏览阅读3.3k次,点赞5次,收藏19次。xlabel('\delta');ylabel('AUC');具体符号的对照表参照下图:_matlab微米怎么输入

C语言程序设计-文件(打开与关闭、顺序、二进制读写)-程序员宅基地

文章浏览阅读119次。顺序读写指的是按照文件中数据的顺序进行读取或写入。对于文本文件,可以使用fgets、fputs、fscanf、fprintf等函数进行顺序读写。在C语言中,对文件的操作通常涉及文件的打开、读写以及关闭。文件的打开使用fopen函数,而关闭则使用fclose函数。在C语言中,可以使用fread和fwrite函数进行二进制读写。‍ Biaoge 于2024-03-09 23:51发布 阅读量:7 ️文章类型:【 C语言程序设计 】在C语言中,用于打开文件的函数是____,用于关闭文件的函数是____。

Touchdesigner自学笔记之三_touchdesigner怎么让一个模型跟着鼠标移动-程序员宅基地

文章浏览阅读3.4k次,点赞2次,收藏13次。跟随鼠标移动的粒子以grid(SOP)为partical(SOP)的资源模板,调整后连接【Geo组合+point spirit(MAT)】,在连接【feedback组合】适当调整。影响粒子动态的节点【metaball(SOP)+force(SOP)】添加mouse in(CHOP)鼠标位置到metaball的坐标,实现鼠标影响。..._touchdesigner怎么让一个模型跟着鼠标移动

【附源码】基于java的校园停车场管理系统的设计与实现61m0e9计算机毕设SSM_基于java技术的停车场管理系统实现与设计-程序员宅基地

文章浏览阅读178次。项目运行环境配置:Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。项目技术:Springboot + mybatis + Maven +mysql5.7或8.0+html+css+js等等组成,B/S模式 + Maven管理等等。环境需要1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。_基于java技术的停车场管理系统实现与设计

Android系统播放器MediaPlayer源码分析_android多媒体播放源码分析 时序图-程序员宅基地

文章浏览阅读3.5k次。前言对于MediaPlayer播放器的源码分析内容相对来说比较多,会从Java-&amp;amp;gt;Jni-&amp;amp;gt;C/C++慢慢分析,后面会慢慢更新。另外,博客只作为自己学习记录的一种方式,对于其他的不过多的评论。MediaPlayerDemopublic class MainActivity extends AppCompatActivity implements SurfaceHolder.Cal..._android多媒体播放源码分析 时序图

java 数据结构与算法 ——快速排序法-程序员宅基地

文章浏览阅读2.4k次,点赞41次,收藏13次。java 数据结构与算法 ——快速排序法_快速排序法