ML-For-Beginners 仓库开发者指南:12 周经典机器学习课程的目录结构、环境搭建与贡献工作流
【免费下载链接】ML-For-Beginners12 weeks, 26 lessons, 52 quizzes, classic Machine Learning for all项目地址: https://gitcode.com/GitHub_Trending/ml/ML-For-Beginners
本篇技术指南以仓库根目录与translations/en/下的 AGENTS.md 为骨架,系统讲解 ML-For-Beginners(一份 12 周、26 课、52 道测验的经典机器学习课程)的仓库布局、Python/R 双语言环境搭建、Notebook 与 Quiz 应用的开发工作流、部署方式以及内容贡献规范。读完本文,你将能够独立把课程跑起来、在本地启动 Vue 测验应用与 Docsify 文档站点,并按项目规范提交你的课程内容改动。
项目概览:面向所有人的经典机器学习课程
ML-For-Beginners 是一份自定进度的学习型课程仓库,使用 Python(以 Scikit-learn 为主)和 R 两种语言讲解经典机器学习概念。课程数据取自全球不同文化与地区的真实数据,通过动手项目、测验(quiz)与作业(assignment)驱动学习,而不是面向生产环境的框架代码。
从 AGENTS.md 的 Project Overview 可以提炼出五个核心组件:
- 教学内容(Educational Content):26 节课,覆盖 ML 入门、回归(regression)、分类(classification)、聚类(clustering)、NLP、时间序列(time series)与强化学习(reinforcement learning)七大主题;
- 测验应用(Quiz Application):基于 Vue.js 构建,提供课前(pre-lecture)与课后(post-lecture)测评;
- 多语言支持(Multi-language Support):通过 GitHub Actions 自动翻译到 40+ 种语言;
- 双语言实现(Dual Language Support):每课同时提供 Python(Jupyter notebook)与 R(R Markdown)两种版本;
- 项目式学习(Project-Based Learning):每个主题都配套实战项目与作业。
该文档同时明确:仓库内还有 sketchnotes 视觉学习笔记、translated_images/多语言图片资源,以及由 docs/_sidebar.md 组织的 Docsify 文档站点。
仓库目录结构:从课程到应用的模块化布局
AGENTS.md 给出的顶层结构如下(与当前仓库实际一致):
ML-For-Beginners/ ├── 1-Introduction/ # ML 基础、历史、公平性、技术概览 ├── 2-Regression/ # Python/R 回归模型 ├── 3-Web-App/ # 用于 ML 模型部署的 Flask Web 应用 ├── 4-Classification/ # 分类算法 ├── 5-Clustering/ # 聚类技术 ├── 6-NLP/ # 自然语言处理 ├── 7-TimeSeries/ # 时间序列预测 ├── 8-Reinforcement/ # 强化学习 ├── 9-Real-World/ # 真实世界 ML 应用 ├── quiz-app/ # Vue.js 测验应用 ├── translations/ # 自动生成的翻译内容 └── sketchnotes/ # 视觉学习辅助其中数字前缀即建议的学习顺序:1-Introduction依次包含 intro-to-ML、history-of-ML、fairness、techniques-of-ML 四课;2-Regression下是 Tools、Data、Linear、Logistic 四课;4-Classification、5-Clustering、6-NLP、7-TimeSeries、8-Reinforcement依次推进,最终落到9-Real-World。这套目录同时也被 docs/_sidebar.md 原样映射为 Docsify 站点的左侧导航,因此新增课程时需同步维护侧边栏。
每个课程文件夹的典型构成(当前仓库中如 2-Regression/1-Tools/ 均符合此模式):
README.md— 课程主内容;notebook.ipynb— Python Jupyter notebook;solution/— 参考答案(Python 与 R 两个版本,如solution/R/下的.rmd);assignment.md— 练习作业;images/— 视觉资源。
环境搭建:从零开始运行课程与工具链
AGENTS.md 按四种场景给出了环境准备命令,这里逐一展开。
Python 课程环境
大多数课程使用 Jupyter notebook,基础依赖如下:
# 确认 Python 3.8+ 已安装 python --version # 安装 Jupyter pip install jupyter # 安装常用 ML 库 pip install scikit-learn pandas numpy matplotlib seaborn # 按课程需求补充安装,例如 Web App 课程 pip install flaskR 课程环境
R 版本的课程位于各课solution/R/目录下,为.rmd(R Markdown)或.ipynb文件。在 R 控制台安装三个核心包族:
install.packages(c("tidyverse", "tidymodels", "caret"))Quiz 应用环境
测验应用是位于 quiz-app/ 目录下的 Vue.js 项目:
cd quiz-app npm installDocsify 文档站点
仓库使用 Docsify 渲染在线文档,无需构建步骤,可直接本地预览:
# 全局安装 Docsify CLI npm install -g docsify-cli # 在仓库根目录启动 docsify serve # 浏览器访问 http://localhost:3000开发工作流:notebook、Python、R 与 Vue 应用
课程 Notebook 工作流
进入课程目录(例如 2-Regression/1-Tools/);
打开 notebook:
jupyter notebook notebook.ipynb按课程内容完成练习;卡住时可查看
solution/下的参考答案。
Python 与 R 开发约定
- Python:使用标准数据科学库(Scikit-learn、Pandas、NumPy、Matplotlib),以 Jupyter notebook 交互式学习,解答代码在每课的
solution/中; - R:课程以
.rmd格式组织,解答位于solution/R/子目录,可用 RStudio 或安装 R kernel 的 Jupyter 运行。
Quiz 应用开发
quiz-app/package.json中定义了完整的开发脚本(当前仓库实测配置):
cd quiz-app # 启动开发服务器 npm run serve # 访问 http://localhost:8080 # 生产构建 npm run build # Lint 并自动修复 npm run lint从源码看,quiz-app/src/router/index.js 使用 Vue Router 的 history 模式,路由包括首页/、/quiz/:id与兜底的 NotFound 页面;quiz-app/public/routes.json 将任意路径回退到index.html,保证 SPA 刷新后不 404。测验题目资源位于 quiz-app/src/assets/,并已内置 en、es、fr、it、ja、ptbr、tr 等多语言 UI 文案。
测试说明:以教育验证替代自动化测试
AGENTS.md 明确说明:这是一个教育课程仓库,课程内容没有自动化测试。对于 Quiz 应用,验证手段是:
cd quiz-app # Lint 代码 npm run lint # 构建以确认无错误 npm run build课程内容的"测试"则是教育性质的验证流程:
- 完成课程练习;
- notebook 单元全部成功运行;
- 将输出与
solution/中的预期结果对照。
代码风格指南:PEP 8、Vue 风格与文档规范
- Python 代码:遵循 PEP 8;使用清晰、描述性的变量名;复杂操作加注释;Jupyter notebook 应包含解释概念的 Markdown 单元;
- JavaScript/Vue.js(Quiz App):遵循 Vue.js 风格指南,ESLint 配置内嵌于 quiz-app/package.json 的
eslintConfig字段(plugin:vue/essential+eslint:recommended),通过npm run lint检查并自动修复; - 文档:Markdown 清晰结构化;代码示例放在围栏代码块中;内部引用一律使用相对链接,并遵循既有格式约定。
构建与部署:Quiz 应用的 Azure Static Web Apps 部署与 PDF 生成
Quiz 应用部署到 Azure Static Web Apps
前置条件为 Azure 账号与已 fork 的 GitHub 仓库。部署步骤:
- 创建 Azure Static Web App 资源;
- 连接到 GitHub 仓库;
- 设置应用位置(app location)为
/quiz-app; - 设置输出位置(output location)为
dist; - Azure 会自动创建 GitHub Actions 工作流(
.github/workflows/azure-static-web-apps-*.yml),推送 main 分支时自动构建并部署。
这里需要补充一个源码级细节:quiz-app/public/routes.json 的/* → /index.html回退规则正是为这类静态托管场景准备的——history 模式下刷新任意/quiz/:id深层链接时,由服务器把请求全部指向入口 HTML。
文档 PDF 生成
仓库根目录 package.json 定义了convert脚本(调用docsify-to-pdf):
npm install npm run convert课程内的模型部署示例
与部署主题直接相关的还有 3-Web-App/1-Web-App/solution/web-app/app.py:它用 Flask 加载ufo-model.pkl中的分类模型,/渲染表单、/predict接收 POST 表单并把预测结果("Likely country: ...")回填页面。这份代码体现了文档 Security Considerations 中"用户输入做基础校验"的约定——int(x)对每个输入强制类型转换,避免脏数据进入model.predict。
翻译工作流:由 Co-op Translator 自动化的多语言维护
翻译由 GitHub Actions 中的 Co-op Translator 全自动完成,维护者需遵守以下规则:
- 当改动推送到
main分支时自动生成翻译; - 不要手动翻译内容,系统会统一处理;
- 工作流定义在
.github/workflows/co-op-translator.yml,使用 Azure AI/OpenAI 服务翻译,支持 40+ 种语言; - 翻译产物落到 translations/(如
translations/en/、translations/zh-CN/)与translated_images/目录。
需要说明:在当前仓库镜像的.github/workflows/目录下,实际可见的文件仅包含lock.yml、stale.yml、generator-generic-ossf-slsa3-publish.yml,未见文档所述的 co-op-translator 工作流文件,具体以官方 main 分支为准。因此对翻译相关的贡献,请牢记"只改英文原文、不碰翻译产物"的原则。
贡献指南:内容贡献者与 PR 规范
内容贡献流程
- Fork 仓库并创建特性分支;
- 若新增/更新课程,修改课程内容(
README.md、notebook.ipynb等); - 不要修改已翻译文件——它们由流水线自动生成;
- 测试你的代码——确保 notebook 所有单元可运行;
- 验证链接与图片均有效;
- 提交带清晰描述的 Pull Request。
PR 规范
- 标题格式:
[Section] Brief description of changes- 示例:
[Regression] Fix typo in lesson 5 - 示例:
[Quiz-App] Update dependencies
- 示例:
- 提交前自检:所有 notebook 单元无错误执行;若改动 quiz-app 需运行
npm run lint;核对 Markdown 格式;测试新增代码示例; - PR 必须包含:改动描述、改动原因、UI 改动需附截图;
- 行为准则遵循 CODE_OF_CONDUCT.md,并需签署 Contributor License Agreement(CLA)。
课程结构:每课的七段式教学设计
每节课遵循一致的七段式结构:
- 课前测验(Pre-lecture quiz)— 摸底既有知识;
- 课程内容(Lesson content)— 书面讲解与说明;
- 代码演示(Code demonstrations)— notebook 中的动手示例;
- 知识检查(Knowledge checks)— 过程中的理解验证;
- 挑战(Challenge)— 独立应用所学概念;
- 作业(Assignment)— 延伸练习;
- 课后测验(Post-lecture quiz)— 评估学习成果。
课前/课后测验共同构成项目描述中的"52 quizzes",由 quiz-app 承载分发。
常用命令速查表
# Python/Jupyter jupyter notebook # 启动 Jupyter 服务 jupyter notebook notebook.ipynb # 打开指定 notebook pip install -r requirements.txt # 安装依赖(存在 requirements.txt 时) # Quiz App cd quiz-app npm install # 安装依赖 npm run serve # 开发服务器 npm run build # 生产构建 npm run lint # Lint 并修复 # 文档 docsify serve # 本地预览文档 npm run convert # 生成 PDF # Git 工作流 git checkout -b feature/my-change # 创建特性分支 git add . # 暂存改动 git commit -m "Description" # 提交 git push origin feature/my-change # 推送关键技术与安全注意事项
关键技术栈
- Python:课程主语言(Scikit-learn、Pandas、NumPy、Matplotlib);
- R:替代实现,使用 tidyverse、tidymodels、caret;
- Jupyter:Python 课程的交互式 notebook;
- R Markdown:R 课程文档格式;
- Vue.js 3:测验应用框架(当前 quiz-app/package.json 锁定
vue ^3.5.12,搭配 vue-router 与 vue-i18n); - Flask:ML 模型部署的 Web 框架(见 app.py);
- Docsify:文档站点生成器(零构建);
- GitHub Actions:CI/CD 与自动翻译。
安全注意事项
- 代码中不留密钥:绝不提交 API Key 或凭据;
- 依赖更新:保持 npm 与 pip 包及时升级;
- 用户输入:Flask Web 应用示例包含基础输入校验(如
int(x)强制转换); - 敏感数据:示例数据集均为公开、非敏感数据(如
2-Regression/data/US-pumpkins.csv、4-Classification/data/cuisines.csv、5-Clustering/data/nigerian-songs.csv)。
排障指南
Jupyter Notebook
- 内核问题:单元卡住时重启内核:Kernel → Restart;
- 导入错误:用 pip 确认所需包均已安装;
- 路径问题:请在其所在目录内运行 notebook(各课 notebook 中的数据路径多为相对路径)。
Quiz 应用
- npm install 失败:清缓存重试:
npm cache clean --force; - 端口冲突:换端口启动:
npm run serve -- --port 8081; - 构建错误:删除
node_modules后重装。
R 课程
- 找不到包:
install.packages("package-name"); - RMarkdown 渲染失败:确认已安装 rmarkdown 包;
- 内核问题:Jupyter 中使用 R 需安装 IRkernel。
项目特性总结:一门学习型课程而非生产代码
- 本质是学习型课程而非生产代码,聚焦于通过动手实践理解 ML 概念;
- 代码示例优先可读性而非性能优化;
- 大多数课程相互独立,可单独完成;
- 提供参考答案,但建议学习者先独立尝试;
- 文档站点使用Docsify,无构建步骤;
- Sketchnotes提供概念可视化总结(见 sketchnotes/README.md);
- 多语言支持让内容全球可访问(translations/ 下 40+ 语言目录)。
注:本文基于仓库内
translations/en/AGENTS.md(与根目录 AGENTS.md 一致)撰写,其中翻译流水线文件路径等个别细节以官方 main 分支为准。
【免费下载链接】ML-For-Beginners12 weeks, 26 lessons, 52 quizzes, classic Machine Learning for all项目地址: https://gitcode.com/GitHub_Trending/ml/ML-For-Beginners
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考