DAT8
DAT8 是通用集会(General Assembly)于 2015 年在华盛顿特区开设的数据科学课程全套开源资料库。它并非一个可直接运行的软件工具,而是一套结构完整、循序渐进的教学资源,旨在帮助学习者从零开始掌握数据科学的核心技能。
这套资料系统地解决了数据科学入门难、知识碎片化的问题。课程内容涵盖从命令行操作、版本控制、数据清洗、探索性分析、可视化,到机器学习算法(如线性回归、逻辑回归、KNN、决策树、聚类等)、模型评估、自然语言处理及实战项目等全流程。所有材料按课时整理,配合讲师 Kevin Markham 的详细讲解与代码示例,让抽象概念变得具体可操作。
DAT8 特别适合希望系统学习数据科学的初学者、转行者或自学者,尤其是具备基础编程兴趣但缺乏完整学习路径的开发者、分析师或研究人员。其独特亮点在于由知名数据教育者主导,内容经过实际课堂验证,并支持通过 Binder 一键在线运行笔记,无需本地配置即可体验部分实验环境。此外,课程还整合了丰富的 Python 学习资源推荐,帮助用户夯实基础。无论是想构建知识体系,还是寻找教学参考,DAT8 都是一份值得深入挖掘的宝贵资产。
使用场景
一位刚转行数据科学的产品经理,急需在两周内掌握从数据清洗到机器学习建模的全套实战技能以应对新岗位的挑战。
没有 DAT8 时
- 学习路径支离破碎,需要在 Stack Overflow、各类博客和文档间反复跳转,难以构建系统的知识框架。
- 缺乏统一的实战环境配置指南,常在安装 Python 包、Git 版本控制等前置步骤上耗费数天,甚至因环境报错而放弃。
- 只有零散的代码片段,缺少从“数据读取”到“模型评估”的完整项目流演示,无法理解各环节如何衔接。
- 面对抽象的算法理论(如 KNN、逻辑回归),没有配套的交互式 Notebook 进行即时演练,导致“看懂了但写不出”。
- 遇到瓶颈时找不到经过验证的练习数据集和标准答案,自我评估困难,难以确认学习成果是否达标。
使用 DAT8 后
- 直接沿用 General Assembly 验证过的 22 节系统课表,按部就班地从命令行基础进阶到集成学习,知识体系清晰完整。
- 利用详细的课前检查清单和 Anaconda 配置指引,快速搭建好包含所有依赖包的开发环境,第一天即可开始写代码。
- 通过 22 个完整的 Jupyter Notebook 案例,亲手复现从数据清洗、探索性分析到最终 Kaggle 竞赛的全流程,打通任督二脉。
- 结合 Kevin Markham 的视频讲解与可运行的代码单元,边学边改参数观察结果,将复杂的机器学习算法转化为直观的操作经验。
- 依托课程提供的专属数据集和项目作业,能够对照标准解法进行自我测试,并在结业项目中产出可展示的作品集。
DAT8 将原本混乱的自学过程转化为一条结构严谨、即开即用的数据科学高速成长通道。
运行环境要求
- Linux
- macOS
- Windows
未说明
未说明

快速开始
DAT8 课程仓库
华盛顿特区 General Assembly 数据科学课程 的课程资料(2015年8月18日至10月29日)。
讲师: Kevin Markham (数据学校博客、邮件通讯、YouTube 频道)
| 星期二 | 星期四 |
|---|---|
| 8月18日:数据科学导论 | 8月20日:命令行与版本控制 |
| 8月25日:数据读取与清洗 | 8月27日:探索性数据分析 |
| 9月1日:可视化 | 9月3日:机器学习 |
| 9月8日:获取数据 | 9月10日:K近邻算法 |
| 9月15日:基础模型评估 | 9月17日:线性回归 |
| 9月22日:第一次项目展示 | 9月24日:逻辑回归 |
| 9月29日:高级模型评估 | 10月1日:朴素贝叶斯与文本数据 |
| 10月6日:自然语言处理 | 10月8日:Kaggle 竞赛 |
| 10月13日:决策树 | 10月15日:集成学习 |
| 10月20日:高级 scikit-learn 与聚类 | 10月22日:正则化与正则表达式 |
| 10月27日:课程回顾 | 10月29日:最终项目展示 |
Python 资源
- Codecademy 的 Python 课程:适合初学者,包含大量浏览器内练习。
- Dataquest:通过交互式练习,在数据科学背景下教授 Python。
- Google 的 Python 课程:稍显进阶,包含数小时有用的讲座视频和可下载的练习题(附解答)。
- Python 入门:一系列 IPython 笔记本,很好地解释了 Python 核心概念和数据结构。
- Python for Informatics:一本非常面向初学者的书籍,配有相关 幻灯片 和 视频。
- 科学家的 Python 快速入门:阅读概述部分,即可快速了解 Python。
- Python 2.7 快速参考:我的初学者指南,通过简短且注释清晰的示例演示 Python 概念。
- 初级 和 中级 工作坊代码:可用于复习和参考。
- Python Tutor:允许您可视化 Python 代码的执行过程。
课程项目
机器学习模型比较
模型评估方法与指标比较
提升数据科学能力的建议
其他资源
第1课:数据科学导论
作业:
- 使用终端(Linux/Mac)或Git Bash(Windows),完成GA友好的命令行教程。
- 阅读这份命令行参考,并完成文末的课前练习。(完成后无需提交任何内容。)
- 观看Git与GitHub入门中的视频1至8(共21分钟),或阅读Pro Git的第1.1至2.2节。
- 如果你的笔记本电脑有任何设置问题,请在周四之前与我们一起解决。如果你的电脑尚未经过检查,建议你周四提前到场,或者自行对照设置检查清单进行检查,并告知我们已完成。
资源:
- 要了解不同类型的数据科学家,可以阅读分析分析师(32页)。
- 想了解数据科学家的工作状态,可以阅读来自Win-Vector和Datascope Analytics的短文。
- Quora上有一个数据科学主题FAQ,包含大量有趣的问答。
- 可以通过Data Community DC的活动日历或每周简报了解本地数据相关的活动。
第2课:命令行与版本控制
作业:
- 使用Chipotle数据完成命令行作业。
- 复习初级和中级Python工作坊的代码。如果你对其中任何内容感到不熟悉(“requests”和“APIs”部分除外),本周末应花时间练习Python:
- Python入门很好地讲解了Python的基础知识,并提供了大量示例代码。
- 如果你喜欢从书本学习,Python for Informatics中有关于字符串、列表和字典的实用章节。
- 如果你更喜欢互动式练习,可以尝试Codecademy的以下课程:“Python列表与字典”和“超市的一天”。
- 如果你有更多时间,可以尝试DataQuest的Learning Python课程中的任务2和任务3。
- 如果你已经掌握了这些内容并希望接受更大挑战,可以尝试解决Python Challenge的第一题(解密信息),并将你的代码发送到Slack。
- 为了帮助你构建项目思路,观看什么是机器学习?它是如何工作的?(10分钟)。(这是视频中展示的IPython笔记本。)或者阅读A Visual Introduction to Machine Learning,该文重点介绍了一种名为决策树的特定机器学习模型。
- 可选: 浏览更多学生项目示例,或许能为你的项目提供灵感!
Git与Markdown资源:
- Pro Git是一本学习Git的优秀书籍。请阅读前两章,以更深入地理解版本控制和基本命令。
- 如果你想大量练习Git(并学习更多命令),Git Immersion看起来很有前景。
- 要理解如何在GitHub上贡献代码,首先需要掌握分支与拉取请求的概念。
- GitRef是我最喜欢的Git命令参考指南,而面向初学者的Git快速参考则是一份更简洁的指南,按工作流程分类列出了常用命令。
- 破解GitHub增长密码解释了为什么GitHub在开发者中如此受欢迎。
- Markdown速查表提供了详尽的Markdown示例及简要说明。GitHub的掌握Markdown指南则更为简单直观,但内容相对较少。
命令行资源:
- 如果想更深入地学习命令行,数据科学与命令行是一本好书。其配套网站提供了“数据科学工具箱”(一个预装了大量命令行工具的虚拟机)的安装说明,以及一份关于常用命令行工具的详细参考指南。
- 如果你想用命令行对CSV文件做更多处理,可以试试csvkit,它可以通过
pip安装。
第3课:数据读取与清洗
作业:
- 使用Chipotle数据完成Python作业,将带有注释的Python脚本添加到你的GitHub仓库中,并通过作业提交表单提交链接。你需在周二(9月1日)前完成此作业。(注意:本作业不得使用第4课中讲到的Pandas库。)
资源:
- 如果你对列表推导式仍感到困惑,想理解Python的推导式吗?用Excel或SQL来思考可能会有所帮助。
- 我的代码不工作是一张很棒的流程图,解释了如何调试Python错误。
- PEP 8是Python的“经典”代码风格指南,如果你想编写可读性强且与Python社区其他成员一致的代码,值得一读。
- 如果你想更深入地理解Python,Ned Batchelder的像本地人一样循环和Python中的名称与值是非常优秀的演讲。
第4课:探索性数据分析
作业:
- 与导师讨论项目想法的截止日期为周二(9月1日),而项目问题的书面说明则需在周四(9月3日)前提交。
- 阅读纽约市一半出租车中的软件如何每年带来520万美元的额外小费,这是一篇关于探索性数据分析的绝佳案例。
- 阅读安斯康姆四重奏及为何汇总统计无法揭示全部真相,这是一个经典的例子,说明可视化的重要性。
资源:
- 浏览或搜索Pandas的API参考文档是寻找函数的绝佳方式,即使你并不知道它的准确名称。
- 通过推文讲述我拿到新数据集时会做什么以一种有趣(但富有启发性)的方式展示了探索性数据分析的过程。
第5课:可视化
- 带有 Chipotle 数据的 Python 作业截止日期(解决方案,详细解释)
- 使用 Pandas 进行探索性数据分析第 2 部分(代码)
- 使用 Pandas 和 Matplotlib 进行可视化(笔记本)
作业:
- 您的项目问题撰写将于周四截止。
- 完成带有 IMDb 数据的Pandas 作业。您需要在周二(9月8日)之前完成此作业。
- 如果您未使用 Anaconda,请使用
pip安装 [Jupyter Notebook](原名 IPython Notebook)。(Jupyter 或 IPython Notebook 已包含在 Anaconda 中。)
Pandas 资源:
- 若要深入了解 Pandas,可阅读这篇三部分教程,或查看以下两份优秀的(但非常长的)Pandas 笔记本:入门和数据清洗。
- 如果您想深入研究 Pandas(以及 NumPy),可以阅读由 Pandas 的创建者编写的书籍Python 数据分析。
- 此笔记本演示了 Pandas 中不同类型的连接操作,适用于需要合并两个 DataFrame 的情况。
- 这是一份关于 Pandas 中[数据透视表]的简洁教程(链接)。
- 在 Python 中处理地理空间数据时,GeoPandas看起来很有前景。这篇教程使用 GeoPandas(以及 scikit-learn)构建了新加坡的“语言街道地图”。
可视化资源:
- 观看看看你的数据(18 分钟),这是一个很好的例子,说明为什么可视化对于理解数据非常有用。
- 如需了解更多关于 Pandas 绘图的内容,可阅读此笔记本或 Pandas 官方文档中的可视化页面。
- 若要进一步自定义您的图表,可以浏览此关于 matplotlib 的笔记本或另一份类似的笔记本。
- 阅读Python 可视化工具概述,其中对 Matplotlib、Pandas、Seaborn、ggplot、Bokeh、Pygal 和 Plotly 进行了有用的比较。
- 若要了解不同类型的可视化及其适用场景,选择合适的图表和图形连续体是不错的单页参考资料;而交互式的R 图形目录则提供了便捷的筛选功能。
- 哥伦比亚大学数据挖掘课程中的一份PowerPoint 演示文稿包含了大量关于如何正确使用不同类型可视化的好建议。
- 哈佛大学的数据科学课程(链接)包含了一堂关于[可视化目标、数据类型和统计图表]的精彩讲座(83 分钟),讲义也可供下载。
第6课:机器学习
作业:
- 可选: 完成人类学习笔记本中列出的附加练习。它可以替代你过去或未来错过的一次作业!此作业需在周二(9月8日)前提交。
- 如果你未使用Anaconda,请使用
pip安装requests和Beautiful Soup 4。(这两个包都包含在Anaconda中。)
机器学习资源:
- 如需快速了解机器学习的关键要点,可观看什么是机器学习?它是如何工作的?(10分钟),或阅读配套笔记本。
- 若要深入了解机器学习,可阅读Hastie与Tibshirani所著优秀书籍《统计学习导论》中的第2.1节(共14页)(可免费下载PDF版!)。
- 来自加州理工学院“从数据中学习”课程的视频学习范式(13分钟),对监督学习与无监督学习进行了精彩对比,并介绍了“强化学习”。
- 现实世界中的主动学习是一篇通俗易懂且全面的介绍,讲解了“主动学习”——一种机器学习的变体,其中人类仅标注最“重要”的样本。
- 为提前了解本课程将涵盖的机器学习内容,可阅读Sebastian Raschka撰写的监督学习流程概述。
- 数据科学、机器学习与统计学:名称背后有何含义?探讨了这些术语(以及其他术语)之间的区别。
- 表情符号翻译项目是机器学习的一个非常有趣的实际应用。
- 查阅您所在邮编的特征,然后详细阅读67个不同细分群体的相关信息。
IPython Notebook资源:
- 如需回顾IPython Notebook的介绍(并预览scikit-learn),可观看scikit-learn与IPython Notebook(15分钟),或阅读配套笔记本。
- 若想学习IPython Notebook,官方的Notebook教程非常有帮助。
- 这篇Reddit讨论比较了IPython Notebook与Spyder各自的优缺点。
第7课:获取数据
家庭作业:
- 可选: 完成网页抓取代码中列出的作业练习。它可以替代你过去或将来错过的一次作业!此作业需在周二(9月15日)前提交。
- 可选: 如果你未使用Anaconda,请使用
pip安装Seaborn(安装说明)。如果你使用Anaconda,则可在命令行中运行conda install seaborn来安装Seaborn。(请注意,以往课程中有些学生在安装Seaborn后遇到了Anaconda相关问题。)
API资源:
- 这个用于查询美国人口普查API的Python脚本由一位前DAT学员编写。它比我们在课堂上使用的示例稍显复杂,但注释非常详尽,可能为你编写自己的API查询代码提供一个有用的框架。
- Mashape和Apigee允许你探索大量不同的API。此外,针对许多热门API,也有Python API封装库可供使用。
- 数据科学工具包收录了基于位置和文本相关的API。
- Python中的API集成提供了关于REST API的非常易读的入门介绍。
- 微软的人脸检测API,该API驱动着How-Old.net,是一个很好的例子,展示了如何利用机器学习API构建引人入胜的Web应用。
网页抓取资源:
- Beautiful Soup文档内容极其详尽,但不太适合作为参考指南。不过,其中关于指定解析器的部分可能会有所帮助,尤其是在Beautiful Soup似乎错误地解析页面时。
- 更多Beautiful Soup示例和教程可参见:Python网页抓取入门、一位前DAT学员编写的关于抓取Craigslist的注释丰富的笔记本、斯坦福大学“文本即数据”课程中的这个笔记本,以及哈佛大学数据科学课程中的这个笔记本和配套的视频。
- 如需更长的网页抓取教程,涵盖Beautiful Soup、lxml、XPath和Selenium等内容,可观看来自PyCon 2014的Python网页抓取(3小时23分钟)。其幻灯片和代码也可供下载。
- 对于更复杂的网页抓取项目,Scrapy是一个流行的Python应用框架。它拥有出色的文档,这里还有一份带有详细幻灯片和代码的教程。
- robotstxt.org对如何编写(及阅读)
robots.txt文件进行了简明扼要的解释。 - import.io和Kimono声称可以让你无需编写任何代码即可抓取网站。
- 数学天才如何破解OkCupid找到真爱和Netflix如何逆向工程好莱坞是两个有趣的例子,说明了网页抓取技术如何被用来构建有趣的数据集。
第8课:K近邻算法
作业:
- 阅读关于 偏差-方差权衡 的材料
- 阅读 Kevin 的 可重复性简介,阅读 Jeff Leek 的 创建可重复分析指南,并观看相关的 科尔伯特报告视频(8分钟)。
- 继续推进你的项目……你们的第一次项目展示将在不到两周后举行!
KNN 资源:
- 有关 KNN 和 scikit-learn 的关键点回顾,可以观看 使用著名的鸢尾花数据集入门 scikit-learn(15分钟)和 使用 scikit-learn 训练机器学习模型(20分钟)。
- KNN 支持除欧几里得距离之外的 距离度量,例如 马氏距离,它 会考虑数据的尺度。
- KNN 详细介绍 内容稍显密集,但提供了对 KNN 及其应用更为全面的介绍。
- 这门关于 图像分类 的课程展示了如何使用 KNN 检测相似图像,同时也涉及我们未来课程中将要学习的主题(超参数调优和交叉验证)。
- KNN 适合的一些应用场景包括 目标识别、卫星图像增强、文档分类以及 基因表达分析。
Seaborn 资源:
- 要开始使用 Seaborn 进行可视化,官方网站提供了一系列 详细教程 和一个 示例图库。
- 使用 Seaborn 进行数据可视化 是对一些流行的 Seaborn 图表类型的快速介绍。
- 使用 Seaborn 可视化 Google 表单数据 和 如何用 Python 制作 NBA 投篮热图 都是 Seaborn 在真实世界数据上应用的良好示例。
第9课:基本模型评估
- 可选的网络爬虫作业截止日期(解决方案)
- 可重复性
- 讨论关于 偏差-方差权衡 的阅读作业
- 使用训练/测试集划分进行模型评估(笔记本)
- 浏览 scikit-learn 文档:模块参考、用户指南、类和函数文档
作业:
- 观看 Python 中的数据科学(35分钟),了解线性回归的入门知识(并复习其他课程内容),或者至少阅读一下 相关笔记本。
- 可选: 如果想进一步了解线性回归,可以观看 最简单的回归分析入门(14分钟)。
模型评估资源:
- 要回顾今天课程的一些要点,可以观看 在 scikit-learn 中比较机器学习模型(27分钟)。
- 如果需要进一步解释训练误差与测试误差、偏差-方差权衡以及训练/测试集划分(也称为“验证集方法”),可以观看 Hastie 和 Tibshirani 关于 估计预测误差 的视频(12分钟,从 2 分 34 秒开始)。
- 加州理工学院的《从数据中学习》课程包含一段精彩的视频,讲解 可视化偏差与方差(15分钟)。
- 随机的训练/测试集划分并不总是足够 解释了为什么如果您的数据具有显著的时间特征,随机的训练/测试集划分可能不是合适的模型评估方法。
可重复性资源:
- 我们关于分享数据分析的经验教训 包含 BuzzFeed News 提供的关于如何发布可重复分析的技巧。
- 数据科学家的软件开发技能 讨论了编写函数和恰当注释代码的重要性(以及其他技能),这些对于创建可重复分析非常有用。
- 做得好的数据科学看起来很简单——这对数据科学家来说是个大问题 解释了可重复分析如何展现背后所有精心准备的工作。
第10课:线性回归
- 机器学习练习(文章)
- 线性回归(笔记本)
- 使用了Kaggle竞赛中的Capital Bikeshare数据集
- 数据字典
- 特征工程示例:预测企业协作网络中的用户参与度
作业:
线性回归相关资源:
- 如果想更深入地了解线性回归,可以阅读《统计学习导论》第3章。或者观看相关视频,或阅读我的快速参考指南,其中总结了该章节的关键要点。
- 这篇线性回归简介更加详细且数学上更为严谨,并提供了许多实用建议。
- 这是一篇关于线性回归假设的简短文章。
- Setosa网站提供了一个线性回归的交互式可视化。
- 关于置信区间、假设检验、p值和R²的简要介绍,以及scikit-learn代码与Statsmodels代码的对比,请参阅我的DAT7线性回归课程笔记。
- Quora上有一篇关于置信区间的实用解释。
- 假设检验基础对这一主题进行了很好的概述;John Rauser的演讲没有痛苦的统计学(12分钟)则很好地解释了如何拒绝零假设。
- 今年早些时候,一家主要科学期刊禁止使用p值:
- 准确衡量模型预测误差比较了调整后的R²、AIC和BIC、训练/测试集划分以及交叉验证。
其他资源:
- 《统计学习导论》(http://www-bcf.usc.edu/~gareth/ISL/)第3.3.1节(共4页)对分类特征的哑变量编码有非常清晰的解释。
- Kaggle上有一些关于我们今天使用的共享单车数据的优秀可视化。
第11课:第一次项目展示
- 项目展示!
作业:
- 如果您对概率(5分钟)和赔率(8分钟)这两个概念不太熟悉,请观看Rahul Patwari的相关视频。
- 阅读BetterExplained上的两篇精彩文章:指数函数与e的直观指南和自然对数(ln)揭秘。然后,复习这份简要总结的指数函数和对数知识。
第12课:逻辑回归
家庭作业:
- 如果你对混淆矩阵的相关术语还不太熟悉,请观看Rahul Patwari关于直观的理解敏感性和特异性(9分钟)和敏感性与特异性之间的权衡(13分钟)的视频。
- 关于[ROC曲线和AUC]的视频/阅读作业(homework/13_roc_auc.md)
- 关于[交叉验证]的视频/阅读作业(homework/13_cross_validation.md)
逻辑回归相关资源:
- 如果想深入学习逻辑回归,可以阅读《统计学习导论》第4章的前三节(链接),或者观看该章节的前三个视频(30分钟)(链接)。
- 如果需要更数学化的解释,可以观看吴恩达机器学习课程第3周的前七集视频(71分钟)(链接),或者阅读一位学生整理的相关讲义。
- 关于如何解释逻辑回归系数,可以参考UCLA IDRE提供的优秀指南,以及新墨西哥大学的讲义。
- scikit-learn文档中有一段关于预测概率校准的精彩说明。
- 监督学习迷信备忘录对本课程中涉及的四种分类器(逻辑回归、决策树、KNN、朴素贝叶斯)以及一种未涉及的分类器(支持向量机)进行了非常清晰的对比。
混淆矩阵相关资源:
- 我的混淆矩阵术语简易指南可以作为你的参考。
- 这篇关于亚马逊机器学习的博客文章中包含一张精美的图表,展示了分类阈值如何影响不同的评估指标。
- 这份来自另一门DAT课程的笔记本解释了如何将混淆矩阵视为成本效益矩阵,从而计算出“期望值”(链接)。
第13课:高级模型评估
家庭作业:
- 阅读关于垃圾邮件过滤的材料
- 阅读这些概率论导论幻灯片,或者略读OpenIntro统计教材第2.1节(12页)。特别注意以下术语:概率、互斥事件、样本空间、独立性。
- 可选: 尝试通过这个可视化工具理解条件概率。
- 可选: 若要直观了解贝叶斯定理,可以阅读关于财富与幸福、鸭子或乐高的文章。
ROC相关资源:
- Rahul Patwari有一段关于ROC曲线的精彩视频(12分钟)。
- ROC分析简介是一篇非常易读的论文。
- ROC曲线可用于多种应用场景,例如比较不同特征集以检测Skype上的欺诈用户,以及比较不同分类器在多个流行数据集上的表现。
交叉验证相关资源:
- 如需深入了解交叉验证,可阅读统计学习导论第5.1节(11页),或观看相关视频:K折交叉验证与留一法交叉验证(14分钟)、正确与错误的交叉验证方法(10分钟)。
- 若想理解交叉验证的不同变体,这篇论文对其进行了详细探讨和比较。
- 要学习如何使用GridSearchCV和RandomizedSearchCV进行参数调优,可观看如何在scikit-learn中找到最佳模型参数(28分钟),或阅读相关的笔记本。
其他资源:
- scikit-learn提供了关于模型评估的详尽文档。
- 机器学习模型的反事实评估(45分钟)是一场精彩的演讲,介绍了Stripe公司评估其欺诈检测模型的复杂方式。(这是相关的幻灯片。)
- 可视化机器学习阈值以做出更好的商业决策展示了如何通过可视化不同阈值下的精确率、召回率和“队列率”,帮助您最大化分类器的商业价值。
第14课:朴素贝叶斯与文本数据
- 条件概率与贝叶斯定理
- 朴素贝叶斯分类
- 在scikit-learn中将朴素贝叶斯应用于文本数据(笔记本)
- CountVectorizer 文档
- SMS短信:数据,数据字典
作业:
- 完成另一份作业,使用Yelp数据。截止日期为周二(10月6日)。
- 确认已在您偏好的Python环境中安装了TextBlob,方法是运行
import textblob。若未安装,请在命令行中运行pip install textblob(而非在Python内部)。
资源:
- Sebastian Raschka关于朴素贝叶斯与文本分类的文章,更详细地涵盖了今天课程中的概念性内容。
- 如需了解更多条件概率知识,请阅读这些幻灯片,或参阅OpenIntro统计教材第2.2节(共15页)。
- 如需对朴素贝叶斯分类进行直观解释,请阅读这篇关于机场安检的文章。
- 欲了解更多关于朴素贝叶斯分类的细节,维基百科有两篇优秀的文章(朴素贝叶斯分类器和朴素贝叶斯垃圾邮件过滤),而Cross Validated上也有一个很好的问答。
- 当将朴素贝叶斯分类应用于包含连续特征的数据集时,建议使用GaussianNB,而非MultinomialNB。此笔记本比较了它们在该类数据集上的表现。维基百科对高斯朴素贝叶斯有简短的描述,并提供了一个极佳的示例说明其应用。
- 马里兰大学提供的这些幻灯片进一步阐述了逻辑回归和朴素贝叶斯的数学细节,并解释了朴素贝叶斯实际上是逻辑回归的“特例”。
- Andrew Ng有一篇论文,比较了逻辑回归和朴素贝叶斯在多种数据集上的表现。
- 如果您喜欢Paul Graham的文章,还可以阅读他关于如何改进垃圾邮件过滤器的后续文章,以及这篇关于2004年最先进的垃圾邮件过滤技术的相关论文。
- Yelp发现,与Mechanical Turk相比,朴素贝叶斯在[企业分类]方面更为有效(http://engineeringblog.yelp.com/2011/02/towards-building-a-high-quality-workforce-with-mechanical-turk.html)。
第15课:自然语言处理
- Yelp评论文本作业截止(解决方案)
- 自然语言处理(笔记本)
- 我们的Kaggle竞赛简介
- 创建一个Kaggle账号,使用邀请链接加入竞赛,下载示例提交文件,然后提交该示例提交(这将需要短信账户验证)。
作业:
- 您的论文初稿将于周四(10月8日)截止!请在课前提交您的项目仓库链接(包含论文、代码、数据和可视化内容)。
- 观看Kaggle:运作方式(4分钟),了解Kaggle平台的简要概述。
- 下载竞赛文件,将其移动到
DAT8/data目录,并确保可以使用Pandas打开这些CSV文件。如果遇到无法打开文件的问题,您可能需要关闭实时病毒扫描功能(尤其是Microsoft Security Essentials)。 - 可选: 思考哪些特征可能与预测回复相关,然后探索数据以验证这些假设是否成立。
- 可选: 观看我的项目展示视频(16分钟),了解Kaggle竞赛中端到端机器学习流程的完整演示,包括特征工程。(或者直接阅读幻灯片。)
NLP资源:
- 如果您想深入学习自然语言处理,可以查看这套优秀的视频讲座和幻灯片,它们来自这门Coursera课程(目前已不再提供)。
- 这份幻灯片定义了许多NLP关键术语。
- 《用Python进行自然语言处理》(Natural Language Processing with Python)是深入学习Natural Language Toolkit(NLTK)最受欢迎的书籍。
- Python中的NLP点滴提供了NLTK的良好概述,DAT5的这个笔记本也是如此。
- spaCy 是一种较新的Python文本处理库,专注于性能(与NLTK不同)。
- 如果您想认真研究NLP,Stanford CoreNLP是一套备受推崇的工具集(用Java编写)。
- 在scikit-learn中处理大型文本语料库时,HashingVectorizer是CountVectorizer的一个有用替代方案。
- 自动分类Yelp商家介绍了Yelp如何利用NLP和scikit-learn解决未分类商家的问题。
- 情感分析的现代方法展示了“词向量”如何用于更准确的情感分析。
- 识别幽默漫画字幕是一篇易读的论文,探讨如何识别提交给《纽约客》字幕大赛的有趣字幕。
- DC自然语言处理是我们本地一个活跃的Meetup小组。
第16课:Kaggle竞赛
- Kaggle平台运作概览(幻灯片)
- Kaggle课堂内竞赛:预测Stack Overflow问题是否会关闭
作业:
- 你们将被分配评审两位同学的项目初稿。请在10月20日(周二)前按照同行评审指南向他们提供反馈。
- 阅读机器学习可视化入门,以了解决策树的简要概述。
- 下载并安装Graphviz,它可以帮助你在scikit-learn中可视化决策树。
- Windows用户还需将Graphviz添加到系统路径中:进入控制面板、系统、高级系统设置、环境变量。在系统变量中,编辑“Path”,加入“bin”文件夹的路径,例如:
C:\Program Files (x86)\Graphviz2.38\bin
- Windows用户还需将Graphviz添加到系统路径中:进入控制面板、系统、高级系统设置、环境变量。在系统变量中,编辑“Path”,加入“bin”文件夹的路径,例如:
- 可选: 继续参与我们的Kaggle竞赛!每天最多可以提交5次,比赛将持续到10月27日(周二)东部时间下午6:30(第21节课)。
资源:
- 专业知识毫无用处且无益是一篇对Jeremy Howard(Kaggle前主席)的简短采访,他在文中指出,在构建有效的预测模型时,数据科学技能远比领域专业知识更为重要。
- 为数据科学这项运动做好准备(74分钟),同样由Jeremy Howard主讲,提供了许多关于竞争性机器学习的实用技巧。
- 向顶尖选手学习是一篇优秀的博客文章,总结了Kaggle大师们在Kaggle竞赛中取得好成绩的顶级技巧。
- 无需领域专业知识的特征工程(17分钟),由Kaggle大师Nick Kridler主讲,提供了一些关于如何快速迭代以及在Kaggle竞赛中应将精力集中在何处的简单建议。
- 以下案例可以帮助你更好地理解特征工程的过程:预测火车站的乘客数量、识别在线商店的欺诈用户、检测在线拍卖中的机器人、预测谁会订阅下个乐季的演出,以及评估电商搜索引擎结果的质量。
- 我们的完美提交是一篇有趣的分享,讲述了在公开排行榜上表现优异并不意味着模型能够泛化到新数据。
第17课:决策树
作业:
- 阅读MLWave关于人类集成学习的文章中“群体智慧”部分。
- 可选: 阅读论文我们真的需要数百种分类器来解决现实世界的分类问题吗?的摘要,以及Kaggle首席技术官Ben Hamner对该论文的评论,重点关注其中提到的“随机森林”。
资源:
- scikit-learn关于决策树的文档,不仅提供了树结构的良好概述,还给出了正确的使用建议。
- 如果想更深入地了解决策树,可以阅读数据挖掘导论第4章第3节(共23页)。(第4章可免费下载。)
- 如果希望深入了解不同的决策树算法,这份幻灯片展示了分类与回归树的简史。
- 合唱科学中包含一个简洁的回归树(第136页),用于预测音乐现场观众中会跟着流行歌曲一起合唱的比例。
- 决策树在医学领域常用于鉴别诊断,例如这张用于识别精神病的分类树。
第18课:集成学习
- 完成决策树课程(笔记本)
- 集成学习(笔记本)
- 1986–1987年美国职业棒球大联盟球员数据(hitters.csv)
- 数据字典(第7页)
资源:
- scikit-learn关于集成方法的文档,涵盖了“平均法”(如自助聚合和随机森林)以及“提升法”(如AdaBoost和梯度提升树)。
- MLWave的Kaggle集成指南非常详尽,展示了集成可以采用的多种不同方式。
- 浏览KaggleCrowdFlower竞赛冠军的优秀解决方案论文,以了解赢得Kaggle竞赛所需的工作量和洞察力。
- 可解释性与强大预测模型:为何两者都不可或缺是一篇简短的文章,探讨了在Kaggle竞赛中有效的策略并不总是适用于现实世界。
- 连编写算法的人都未必真正了解其工作原理一文指出,当前最先进机器学习模型的可解释性降低对社会产生了负面影响。
- 如需对随机森林进行直观解释,请阅读Edwin Chen对用通俗语言解释随机森林是如何工作的?的回答。
- 大规模决策森林:经验教训是Sift Science发表的一篇优秀文章,介绍了他们自定义实现的随机森林。
- 拆解随机森林分类器描述了一种解读随机森林内部机制的方法,而不仅仅是关注特征重要性。
- 理解随机森林:从理论到实践是一份深入的学术分析报告,详细探讨了随机森林,并包含了其在scikit-learn中的具体实现细节。
第19课:高级scikit-learn与聚类
作业:
- 重新阅读理解偏差-方差权衡。(关于引导问题的“答案”已发布,可能会对您有所帮助。)
- 可选: 观看加州理工学院《从数据中学习》课程中的两段精彩且相关的视频:偏差-方差权衡(15分钟)和正则化(8分钟)。
scikit-learn资源:
- 这是一个较长的特征缩放示例,使用了scikit-learn,并进一步讨论了可以使用的各种缩放方法。
- Python中的实用数据科学是一份内容详尽、条理清晰的笔记本,其中用到了一些高级的scikit-learn功能:流水线、绘制学习曲线以及模型的序列化保存。
- 要学习如何使用GridSearchCV和RandomizedSearchCV进行参数调优,请观看如何在scikit-learn中找到最佳模型参数(28分钟),或阅读相关笔记本。
- Sebastian Raschka为scikit-learn用户提供了许多优质资源,包括一个包含教程和示例的仓库、一个机器学习工具与扩展库、一本新书《Python机器学习》,以及一个半活跃的博客。
- scikit-learn拥有一个非常活跃的邮件列表,在查找函数信息和提问时,往往比Stack Overflow更有用。
- 如果您忘记了课堂上使用过的某个scikit-learn函数的用法,别忘了这个仓库是完全可搜索的!
聚类资源:
- 要深入了解聚类,可以阅读数据挖掘导论第8章(69页,可免费下载),或浏览该章节的幻灯片。
- scikit-learn的用户指南比较了多种不同的聚类方法。
- 哥伦比亚大学数据挖掘课程提供的这份PowerPoint演示文稿很好地介绍了聚类,包括层次聚类和替代的距离度量方法。
- 《统计学习导论》中有关于K均值聚类(17分钟)和层次聚类(15分钟)的实用视频。
- 这是一个优秀的[层次聚类]交互式可视化工具(链接)。
- 这里有一段关于[均值漂移聚类]的精美动画解释(链接)。
- K模式算法可用于对类别型特征的数据集进行聚类,而无需将其转换为数值型数据。这里有一个Python实现。
- 以下是一些有趣的聚类案例:鲍勃·罗斯作品的统计分析(附数据和Python代码)、一位数学天才如何破解OkCupid找到真爱,以及你所在邮编区域的特征。
第20课:正则化与正则表达式
- 正则化(笔记本)
- 回归:Ridge、RidgeCV、Lasso、LassoCV
- 分类:LogisticRegression
- 辅助函数:Pipeline、GridSearchCV
- 正则表达式
- 巴尔的摩凶杀案数据
- Regular expressions 101:实时测试正则表达式
- 参考指南
- 练习
作业:
- 你的期末项目下周就要提交了!
- 可选: 将你的最终作品提交到我们的Kaggle竞赛中吧!截止时间为美国东部时间10月27日星期二下午6:30。
- 可选: 阅读这篇经典论文,它可能会帮助你将我们整个课程中学到的许多主题联系起来:关于机器学习的一些有用知识。
正则化资源:
- scikit-learn用户指南中的广义线性模型部分解释了不同形式的正则化。
- 《统计学习导论》第6.2节(14页)介绍了套索回归和岭回归。或者观看相关的视频:岭回归(13分钟)和套索回归(15分钟)。
- 如果想了解更多关于套索回归的细节,可以阅读Tibshirani的原始论文。
- 如果需要更数学化的正则化解释,可以观看Andrew Ng的机器学习课程第3周的最后四节课(30分钟),或者阅读一位学生整理的相关讲义。
- 这个来自《用Python构建机器学习系统》第7章的笔记本提供了一个关于正则化线性回归的详细示例。
- 在使用正则化模型时,对分类特征进行哑变量编码有一些特殊考虑。Cross Validated上的一个问答讨论是否应该将哑变量与其他特征一起标准化;而一篇博客文章评论建议不要删除基准水平。
正则表达式资源:
- Google的Python课程包含一个优秀的入门教程(还配有视频)。
- Python for Informatics有一章很好的内容介绍正则表达式。(如果你想运行示例,需要下载mbox.txt和mbox-short.txt。)
- 用正则表达式破冰是Code School的一门互动课程,不过只有第一“关”是免费的。
- 如果你想深入研究正则表达式,RexEgg提供了大量的文章和教程。
- 你不知道的5种使用正则表达式的工具展示了如何在Excel、Word、Google表格、Google表单、文本编辑器等工具中使用正则表达式。
- 探索GitHub提交信息中的情感表达是一个有趣的例子,说明如何利用正则表达式进行数据分析;而Emojineering则解释了Instagram如何使用正则表达式来检测标签中的表情符号。
第21课:课程回顾与期末项目展示
- 项目展示!
- 数据科学回顾
资源:
- scikit-learn的机器学习地图可以帮助你为任务选择“最佳”模型。
- 如何选择机器学习分类器是一篇简短且易读的文章,比较了多种分类模型;分类器比较则是scikit-learn对分类器决策边界所做的可视化展示;监督学习算法比较是我制作的一张模型比较表格;而监督学习误区速查表则提供了更为详尽的比较,并附有大量实用资源链接。
- 机器学习那些坑、机器学习中的幽灵(31分钟)、巧妙的过拟合方法以及机器学习常见陷阱都提供了关于如何避免机器学习中常见错误的深刻建议。
- KDD 2011最佳工业论文中的实用机器学习技巧和Andrew Ng的应用机器学习的建议则包含了比上述资源更高级的指导。
- 监督学习算法的实证比较是一篇2006年的易读研究论文,同时也以演讲形式呈现(77分钟)。
第22课:期末项目展示
- 项目展示!
- 接下来怎么办?
补充资源
整洁数据
- 数据分析中的良好数据管理实践简要总结了“整洁数据”的原则。
- Hadley Wickham的论文详细解释了整洁数据,并提供了许多优秀的示例。
- 洁净数据集示例:鲍勃·罗斯
- 不整洁数据集示例:NFL门票价格、航空安全、喷气机队门票价格、Chipotle订单
- 如果你的同事倾向于创建[计算机无法读取的]电子表格(参见Bosker博客文章),他们可能会从阅读这些发布电子表格数据的建议中受益。(Cross Validated上也有其他一些建议,详见此回答。)
数据库与SQL
- 这份GA幻灯片提供了数据库和SQL的简要介绍。该课程的Python脚本演示了基本的SQL查询,以及如何从Python连接到SQLite数据库并使用Pandas进行查询。
- 这个SQL训练营的仓库包含一个注释极其详细的SQL脚本,非常适合自行逐步学习。
- 这份GA笔记本提供了更简短的数据库和SQL入门,巧妙地将SQL查询与Pandas语法进行了对比。
- SQLZOO、Mode Analytics、可汗学院、Codecademy、Datamonkey以及Code School都提供在线初学者SQL教程,看起来颇具吸引力。Code School还提供了一门进阶教程,不过需要付费。
- w3schools有一个示例数据库,允许你直接在浏览器中练习SQL。同样,Kaggle也允许你使用其在线“Scripts”应用程序查询一个大型SQLite数据库——Reddit评论。
- 每个数据科学家都需要了解的SQL知识是一系列关于SQL基础的简短文章;而面向数据科学家的SQL入门则是一篇具有类似目标的论文。
- 彻底理解SQL的10个简单步骤是一篇适合有一定SQL经验、希望深入理解SQL的读者的好文章。
- SQLite关于查询计划的文章解释了SQL查询是如何“运作”的。
- 关系型数据库管理系统比较列出了SQLite、MySQL和PostgreSQL各自的优缺点。
- 如果你想更深入地学习数据库和SQL,斯坦福大学有一套备受推崇的14节迷你课程。
- Blaze是一个Python包,它使你可以使用类似于Pandas的语法来查询存储在各种数据存储系统中的数据。
推荐系统
- 这份 GA 幻灯片 简要介绍了推荐系统,而该课程中的 Python 脚本 则演示了如何构建一个简单的推荐系统。
- 《大规模数据集挖掘》 第9章(36页)对推荐系统进行了更为深入的介绍。
- 《程序员数据挖掘指南》 第2至4章(165页)以更友好的方式介绍了推荐系统,提供了大量 Python 代码和练习。
- Netflix 奖是一项著名的竞赛,旨在将 Netflix 的推荐系统准确率提高 10%。以下是一些关于 Netflix 奖的有用文章:
- Netflix 推荐:超越五星评分:Netflix 官方博客的两篇文章,总结了此次竞赛及其推荐系统。
- 赢得 Netflix 奖:总结:概述了获胜方案中所采用的模型和技术。
- 对 Netflix 奖的回顾:由获奖团队撰写的竞赛总结。
- 这篇 论文 总结了 Amazon.com 推荐系统的工作原理,而这个 Stack Overflow 问答 则提供了一些补充见解。
- Facebook 和 Etsy 分别在其官方博客上发布了关于其推荐系统工作原理的文章。
- The Global Network of Discovery (GNOD) 提供了一些针对音乐、作者和电影的有趣推荐工具。
- NPR 的 Planet Money 播客节目《你机器里的那些人》(23分钟)探讨了 Amazon Mechanical Turk 如何协助构建推荐引擎(以及更广泛意义上的机器学习)。
- 如果你想更深入地学习推荐系统,Coursera 上有一门相关的 课程。
相似工具推荐
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
NextChat
NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。
ML-For-Beginners
ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。
ragflow
RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。