python-machine-learning-book
python-machine-learning-book 是经典著作《Python 机器学习》(第一版)的官方配套代码仓库与学习资源。它不仅仅提供了书中 400 多页内容的可执行代码示例,更致力于填补理论公式与实际编程之间的鸿沟,帮助读者真正掌握机器学习的核心原理。
该项目主要解决了初学者在面对复杂算法时“懂理论却难落地”的痛点。通过提供从基础概念到最佳实践的完整路径,它引导用户利用 NumPy、scikit-learn 和 Theano 等主流库,将抽象的数学推导转化为可直接运行的 Python 代码。内容涵盖数据预处理、分类算法、降维技术以及模型评估等关键环节,让学习者能直观地看到算法如何在真实场景中发挥作用。
这套资源非常适合希望系统入门机器学习的开发者、数据科学家以及相关领域的研究人员。如果你不满足于仅仅调用现成的 API,而是想深入理解算法背后的逻辑并掌握工业级的编码规范,python-machine-learning-book 将是极佳的起点。其独特的亮点在于强调“知其然更知其所以然”,在提供便捷 Jupyter Notebook 代码的同时,紧密结合书中的理论讲解,确保用户在动手实践中建立起扎实的知识体系。需要注意的是,本仓库对应的是 2015 年出版的第一版内容,若需最新技术栈可参考其第二版项目。
使用场景
某金融科技公司数据分析师小李,正试图从零构建一个信用卡欺诈检测模型,但他发现理论公式与代码实现之间存在巨大鸿沟。
没有 python-machine-learning-book 时
- 理论落地难:虽然懂梯度下降的数学推导,但面对 NumPy 和 scikit-learn 的具体 API 时,不知道如何将公式转化为可运行的代码。
- 预处理踩坑:在处理缺失值和特征缩放时,缺乏最佳实践指导,导致模型因数据分布不均而频繁过拟合。
- 调参无头绪:面对众多分类器(如 SVM、随机森林),不清楚如何系统地进行超参数优化和模型评估,只能盲目试错。
- 资源碎片化:需要在 StackOverflow、零散博客和官方文档间反复跳转,难以形成完整的知识体系,学习效率极低。
使用 python-machine-learning-book 后
- 代码即理论:直接参考书中第 2 章和第 3 章的 Jupyter Notebook 示例,将分类算法的数学逻辑无缝映射为标准的 Python 实现。
- 规范数据流:依据第 4 章“构建优质训练集”的指导,建立了标准化的数据预处理管道,显著提升了模型的泛化能力。
- 科学调优:利用第 6 章提供的模型评估与超参数优化最佳实践,快速锁定了最优参数组合,缩短了开发周期。
- 体系化学习:通过 400 页连贯的代码与讲解,从底层原理到工程实战一气呵成,不再需要碎片化搜索,建立了扎实的方法论。
python-machine-learning-book 通过将深奥的机器学习理论转化为可直接执行的代码案例,帮助开发者跨越了从“懂公式”到“能落地”的关键障碍。
运行环境要求
未说明
未说明

快速开始
Python机器学习书籍代码仓库
重要提示(2017年9月21日):
本GitHub仓库包含的是《Python机器学习》第一版的代码示例。如果您正在寻找第二版的代码示例,请参阅此仓库。
您将在这里找到400页内容丰富、实用的材料,几乎涵盖了您入门机器学习所需的一切——从理论到可以直接上手的代码!这并非又一本“如何使用scikit-learn”的书。我的目标是深入浅出地讲解所有底层概念,告诉您在最佳实践和注意事项方面需要了解的一切,并且我们将主要使用NumPy、scikit-learn和Theano来把这些概念付诸实践。
不确定这本书是否适合您?请查看来自前言和序言的节选,或参阅下方的常见问题解答部分以获取更多信息。
第一版,出版于2015年9月23日
平装本:454页
出版社:Packt Publishing
语言:英语
ISBN-10:1783555130
ISBN-13:978-1783555130
Kindle ASIN:B00YSILNL0
德语ISBN-13:978-3958454224
日语ISBN-13:978-4844380603
意大利语ISBN-13:978-8850333974
繁体中文ISBN-13:978-9864341405
简体中文ISBN-13:978-71111558804
韩语ISBN-13:979-1187497035
俄语ISBN-13:978-5970604090
目录与代码笔记本
只需点击章节标题旁边的 ipynb/nbviewer 链接即可查看代码示例(目前,内部文档链接仅在 NbViewer 版本中受支持)。
请注意,这些只是随书附带的代码示例,我上传它们是为了方便大家;请务必注意,如果没有公式和说明文字,这些笔记本可能无法发挥作用。
- 机器学习——赋予计算机从数据中学习的能力 [目录] [ipynb] [nbviewer]
- 训练用于分类的机器学习算法 [目录] [ipynb] [nbviewer]
- 使用 Scikit-Learn 探索机器学习分类器 [目录] [ipynb] [nbviewer]
- 构建高质量训练集——数据预处理 [目录] [ipynb] [nbviewer]
- 通过降维压缩数据 [目录] [ipynb] [nbviewer]
- 学习模型评估与超参数优化的最佳实践 [目录] [ipynb] [nbviewer]
- 结合不同模型进行集成学习 [目录] [ipynb] [nbviewer]
- 将机器学习应用于情感分析 [目录] [ipynb] [nbviewer]
- 将机器学习模型嵌入 Web 应用程序 [目录] [ipynb] [nbviewer]
- 使用回归分析预测连续型目标变量 [目录] [ipynb] [nbviewer]
- 处理无标签数据——聚类分析 [目录] [ipynb] [nbviewer]
- 训练人工神经网络进行图像识别 [目录] [ipynb] [nbviewer]
- 通过 Theano 并行化神经网络训练 [目录] [ipynb] [nbviewer]
公式参考
教学幻灯片
非常感谢 Dmitriy Dligach 分享他在 芝加哥洛约拉大学 开设的机器学习课程的幻灯片。
数学与 NumPy 补充资源
一些读者询问了数学和 NumPy 的入门资料,因为受限于篇幅并未收录。不过,我最近为另一本书整理了相关资源,并将这些章节免费在线提供,希望也能作为本书的有益背景材料:
引用本书
您完全可以将本书中的代码片段或其他内容用于科学出版物及其他作品; 在这种情况下,恳请您引用原始出处:
BibTeX:
@Book{raschka2015python,
author = {Raschka, Sebastian},
title = {Python Machine Learning},
publisher = {Packt Publishing},
year = {2015},
address = {Birmingham, UK},
isbn = {1783555130}
}
MLA:
Raschka, Sebastian. Python machine learning. Birmingham, UK: Packt Publishing, 2015. Print.
反馈与评论
简短评论摘录
塞巴斯蒂安·拉施卡的新书《Python机器学习》刚刚出版。我有幸阅读了审阅稿,正如我所期待的那样——非常出色!全书条理清晰、易于理解,不仅为非专业人士提供了良好的基础,从业者也能从中获得启发并学到新技巧。
– 朗·里斯伯格,发表于Data Elixir
太棒了!到目前为止,这本书在我看来很好地平衡了理论与实践、数学与代码!
– 布莱恩·托马斯
我几乎读遍了所有基于Scikit-learn的机器学习书籍,而这本无疑是目前最好的。
– 杰森·沃洛索诺维奇
这是我见过PACKT出版社出版的最佳书籍。这是一本用Python编写的非常优秀的机器学习入门书。正如其他人所指出的那样,它完美地融合了理论与应用。
– 乔什·D.
这是一本难得兼具多种优点的书:既包含了掌握理论所需的数学知识,又提供了大量的Python代码示例来展示如何实际应用这些机器学习技术。此外,书中没有像许多其他书籍那样为了迎合更广泛的读者而浪费篇幅去介绍Python基础知识,这一点也令人赞赏。可以看出,作者是真正懂行的人,而非仅仅出于兴趣的DIY爱好者。
– 亚马逊用户
塞巴斯蒂安·拉施卡创作了一部将理论与实践相结合的精彩机器学习教程。本书从理论角度讲解机器学习,并配有大量代码示例,展示了如何实际运用各种机器学习技术。无论是初学者还是高级程序员,都可以轻松阅读此书。
- 威廉·P·罗斯,《7本必读的Python书籍》(http://williampross.com/7-must-read-python-books/)
长篇评论
如果您需要帮助决定这本书是否适合您,请查看下方链接的一些“长篇”评论。(如果您撰写了评论,请告知我,我很乐意将其添加到列表中)。
- Python机器学习书评 由英国特许IT学会的帕特里克·希尔撰写
- 书评:塞巴斯蒂安·拉施卡的《Python机器学习》 由WhatPixel的亚历克斯·特纳撰写
链接
- 电子书和纸质书可在Amazon.com、Amazon.co.uk、Amazon.de 购买
- 电子书和纸质书 可在Packt出版社官网购买
- 其他书店:Google Books、O'Reilly、Safari、Barnes & Noble、Apple iBooks 等
- 社交平台:Goodreads
中文译本
- 意大利语译本 由“Apogeo”出版
- 德语译本 由“mitp Verlag”出版
- 日语译本 由“Impress Top Gear”出版
- 中文繁体版
- 中文简体版
- 韩语译本 由“Kyobo”出版
- 波兰语译本 由“Helion”出版
文献引用与拓展阅读资源
勘误表
附录笔记本(书中未包含)
- 逻辑回归实现 [目录] [ipynb] [nbviewer]
- 基本的流水线与网格搜索设置 [目录] [ipynb] [nbviewer]
- 扩展的嵌套交叉验证示例 [目录] [ipynb] [nbviewer]
- 简单的基础 Flask Web 应用模板 [查看目录][下载为 zip 文件]
- 将 MNIST 手写数字读取到 NumPy 数组中 [GitHub ipynb] [nbviewer]
- 使用 JSON 持久化 scikit-learn 模型 [GitHub ipynb] [nbviewer]
- 多项式逻辑回归 / softmax 回归 [GitHub ipynb] [nbviewer]
“相关内容”(书中未包含)
SciPy 2016
我们在奥斯汀举行的 SciPy 2016 上度过了非常愉快的时光!能与这么多本书的读者见面并交流,真是令人高兴。非常感谢大家给予的赞美和反馈!另外,如果你错过了的话,我和 Andreas Mueller 共同做了题为 “使用 scikit-learn 进行机器学习入门” 的演讲;如果你感兴趣,第一部分 和 第二部分 的视频现在已上线!
PyData Chicago 2016
在 PyData Chicago 2016 上,我尝试完成了一项颇具挑战性的任务——仅用 90 分钟介绍 scikit-learn 和机器学习。演示文稿及教程材料可在 “学习 scikit-learn —— Python 中的机器学习入门” 中找到。
注
我建立了一个独立的库 mlxtend,其中包含了额外的机器学习(以及通用“数据科学”)算法实现。我还添加了本书中的实现(例如决策区域图、人工神经网络和顺序特征选择算法),并为其增加了更多功能。
各语言译本
亲爱的读者们,
首先,我要感谢各位一直以来的支持!对于大家迄今为止发给我的所有积极反馈,我感到非常高兴,也很欣慰这本书对广大读者都十分有用。
在过去几个月里,我收到了数百封邮件,并且在有限的时间内尽力回复了尽可能多的邮件。为了让这些回答也能帮助其他读者,我在下面的常见问题解答部分收集了许多我的回复。
此外,还有一些读者询问我是否有一个平台可以让大家讨论书中的内容。我希望这能为大家提供一个与其他读者交流和分享知识的机会:
Google Groups 讨论板
(如果时间允许,我也会尽量亲自回答大家的问题! :))
对于好的建议,唯一要做的就是把它传递出去。它对自己从来没有任何用处。
— 奥斯卡·王尔德
读者提供的示例与应用
再次感谢大家对这本书的宝贵反馈。我收到了许多来自读者的邮件,他们将书中的概念和示例应用到了实际生活中,在各自的项目中发挥了很好的作用。在这一部分,我开始收集一些优秀的应用案例,也非常欢迎你将自己的项目加入到这个列表中——只需给我发一封简短的邮件即可!
- 光学字符识别相关的 40 个脚本 由 Richard Lyman 提供
- 代码实验 由 Jeremy Nation 提供
- 从零开始用 Python 实现分类器的心得体会 由 Jean-Nicholas Hould 提供
常见问题解答
一般问题
- 什么是机器学习和数据科学?
- 为什么你和其他人有时会从头实现机器学习算法?
- 在数据科学领域,我应该专注于哪条学习路径或学科?
- 一个人应该在什么时候开始参与开源项目?
- 你认为拥有导师对学习过程有多重要?
- 围绕数据科学、机器学习或Python的最佳在线社区有哪些?
- 你会如何向软件工程师解释机器学习?
- 针对机器学习初学者的课程体系会是什么样的?
- 数据科学的定义是什么?
- 数据科学家是如何进行模型选择的?这与Kaggle上的做法有区别吗?
关于机器学习领域的提问
- 人工智能和机器学习之间有什么关系?
- 机器学习在实际应用中的例子有哪些?
- 数据挖掘有哪些不同的研究领域?
- 机器学习和数据挖掘这两个领域的研究性质有何不同?
- 我如何判断一个问题是否可以通过机器学习来解决?
- 机器学习的起源是什么?
- 作为学习机的分类器是如何发展起来的?
- 哪些机器学习算法可以被认为是最佳算法之一?
- 分类器有哪些主要类别?
- 分类器和模型有什么区别?
- 参数化学习算法和非参数化学习算法有什么区别?
- 机器学习中的成本函数和损失函数有什么区别?
关于机器学习概念和统计学的问题
成本函数与优化
回归分析
树模型
- 随机森林模型是如何工作的?它与集成学习中的bagging和boosting方法有何不同?
- 对于大型数据集,使用经典决策树算法有哪些缺点?
- 为什么决策树算法的实现通常是二叉树结构?不同的不纯度度量指标有哪些优势?
- 为什么我们在构建决策树时倾向于使用熵而不是分类误差?
- 在什么情况下随机森林的表现会非常糟糕?
模型评估
- 什么是过拟合?
- 如何避免过拟合?
- 在进行交叉验证时,是否总是折数越多越好?
- 训练SVM分类器时,支持向量的数量是多一些好还是少一些好?
- 如何评估一个模型?
- 多分类问题的最佳验证指标是什么?
- 在选择预测模型技术时,我应该考虑哪些因素?
- 有哪些适合用来可视化和理解分类器行为的玩具数据集?
- 如何选择SVM的核函数?
- 插曲:在交叉验证中比较和计算性能指标——不平衡分类问题及三种不同的F1分数计算方法
逻辑回归
- 什么是Softmax回归?它与逻辑回归有什么关系?
- 为什么逻辑回归被视为线性模型?
- 正则化逻辑回归的概率解释是什么?
- 逻辑回归中的正则化是否总是能带来更好的拟合效果和更强的泛化能力?
- 朴素贝叶斯和逻辑回归之间最大的区别是什么?
- 在机器学习的上下文中,“softmax和多项式逻辑损失”到底是什么意思?
- 逻辑回归与神经网络之间有什么联系?在什么情况下应该使用哪一种?
- 逻辑回归:为什么使用sigmoid函数?
- 是否存在类似于线性回归中正规方程那样的逻辑回归解析解?
神经网络与深度学习
- 深度学习和普通机器学习有什么区别?
- 能否用可视化的方式来解释神经网络中的反向传播算法?
- 为什么深度网络的发明花了这么长时间?
- 有哪些好的书籍或论文可以帮助学习深度学习?
- 为什么会有这么多深度学习库?
- 为什么有些人讨厌神经网络/深度学习?
- 我如何判断深度学习是否比SVM或随机森林更适合解决某个特定问题?
- 当我的神经网络误差不断增加时,可能出了什么问题?
- 如何调试人工神经网络算法?
- 感知器、Adaline和神经网络模型之间有什么区别?
- Dropout技术的基本思想是什么?
其他监督学习算法
非监督学习
半监督学习
集成方法
预处理、特征选择与特征提取
- 为什么需要使用训练数据的参数来转换测试数据?
- 机器学习中有哪些不同的降维方法?
- LDA 和 PCA 在降维方面有什么区别?
- 我应该在什么情况下应用数据归一化或标准化?
- 对数据进行均值中心化或特征缩放是否会影响主成分分析的结果?
- 当特征数量非常多时,应该如何解决机器学习问题?
- 处理缺失数据有哪些常见方法?
- 过滤法、包裹法和嵌入法在特征选择上有何不同?
- 数据准备/预处理步骤是否应被视为特征工程的一部分?为什么或为什么不?
- 用于文本分类的词袋特征表示是否可以视为稀疏矩阵?
朴素贝叶斯
其他
数据科学与机器学习的编程语言和库
关于本书的问题
- 我可以在演示文稿或博客中使用本书中的段落和图片吗?
- 这本书与其他机器学习书籍有何不同?
- 代码示例中使用的是哪个版本的 Python?
- 本书使用了哪些技术和库?
- 您推荐哪个版本或格式的书?
- 您为什么选择 Python 进行机器学习教学?
- 为什么在代码示例中会使用如此多的前导和尾部下划线?
- 您在代码示例中频繁使用
return self惯用法的目的是什么? - 本书是否有先修要求或推荐的预读材料?
- 如何将支持向量机应用于分类数据?
联系方式
我很乐意回答您的问题!请发送邮件至 mail@sebastianraschka.com,或者在 Google Groups 邮件列表 上提问。
如果您希望保持联系,我的 Twitter 账号 @rasbt 经常分享关于数据科学和机器学习的内容。此外,我还维护着一个博客 http://sebastianraschka.com/articles.html,会在上面发布我特别感兴趣的话题。
版本历史
v1.32016/09/30v1.22016/03/27v1.02015/10/06常见问题
相似工具推荐
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 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。













