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-7111558804
韩文 ISBN-13:979-1187497035
俄语 ISBN-13:978-5970604090
目录和代码笔记本
只需点击章节标题旁边的ipynb
/ nbviewer
链接即可查看代码示例(目前仅 NbViewer 版本支持内部文档链接)。请注意,这些只是本书附带的代码示例,我上传这些示例是为了您的方便;请注意,如果没有公式和描述性文本,这些笔记本可能没有用。
- 前言和序言摘录
- 设置 Python 和 Jupiter Notebook 的说明
- 机器学习 - 赋予计算机从数据中学习的能力 [dir] [ipynb] [nbviewer]
- 训练分类机器学习算法 [dir] [ipynb] [nbviewer]
- 使用 Scikit-Learn 的机器学习分类器概览 [dir] [ipynb] [nbviewer]
- 构建良好的训练集 - 数据预处理 [dir] [ipynb] [nbviewer]
- 通过降维压缩数据 [dir] [ipynb] [nbviewer]
- 学习模型评估和超参数优化的最佳实践 [dir] [ipynb] [nbviewer]
- 组合不同模型进行集成学习 [dir] [ipynb] [nbviewer]
- 将机器学习应用于情感分析 [dir] [ipynb] [nbviewer]
- 将机器学习模型嵌入到 Web 应用程序中 [dir] [ipynb] [nbviewer]
- 使用回归分析预测连续目标变量 [dir] [ipynb] [nbviewer]
- 使用未标记的数据 – 聚类分析 [dir] [ipynb] [nbviewer]
- 训练用于图像识别的人工神经网络 [dir] [ipynb] [nbviewer]
- 通过 Theano 并行化神经网络训练 [dir] [ipynb] [nbviewer]
方程参考
[PDF] [TEX]
教学幻灯片
非常感谢 Dmitriy Dligach 分享了他目前在芝加哥洛约拉大学提供的机器学习课程的幻灯片。
- https://github.com/dmitriydligach/PyMLSlides
其他数学和 NumPy 资源
一些读者询问有关 Math 和 NumPy 的入门知识,因为由于长度限制,它们没有包含在内。然而,我最近为另一本书整理了这些资源,但我在网上免费提供这些章节,希望它们也可以作为本书的有用背景材料:
引用这本书
非常欢迎您在科学出版物和其他作品中重复使用本书中的代码片段或其他内容;在这种情况下,我希望引用原始来源:
参考书目:
@Book{raschka2015python,
author = {Raschka, Sebastian},
title = {Python Machine Learning},
publisher = {Packt Publishing},
year = {2015},
address = {Birmingham, UK},
isbn = {1783555130}
}
司法协助:
拉斯卡,塞巴斯蒂安。 Python机器学习。英国伯明翰:Packt Publishing,2015 年。印刷。
反馈与评论
简短的评论片段
Sebastian Raschka 的新书《Python 机器学习》刚刚发布。我有机会阅读了评论副本,它正如我所期望的那样 - 真的很棒!它组织良好,超级容易遵循,它不仅为聪明的非专家提供了良好的基础,从业者也可以在这里获得一些想法并学习新的技巧。
– Data Elixir 的 Lon Riesberg
干得好!到目前为止,对我来说,它似乎已经达到了理论和实践……数学和代码的正确平衡!
——布莱恩·托马斯
我(几乎)读过所有基于 Scikit-learn 的机器学习书籍,这无疑是最好的一本。
——贾森·沃洛索诺维奇
我见过的最好的书,来自 PACKT Publishing。这是一篇关于使用 Python 进行机器学习的写得非常好的介绍。正如其他人所指出的,这是理论与应用的完美结合。
——乔什·D.
这本书融合了很难获得的品质:将控制理论所需的数学与 Python 中的应用编码相结合。同样令人高兴的是,它没有像许多其他书籍那样浪费纸张来介绍 Python 入门知识,只是为了吸引更多读者。您可以看出它是由知识渊博的作家编写的,而不仅仅是 DIY 极客。
– 亚马逊客户
Sebastian Raschka 创建了一个令人惊叹的机器学习教程,它将理论与实践相结合。这本书从理论角度解释了机器学习,并有大量编码示例来展示如何实际使用机器学习技术。初学者或高级程序员都可以阅读它。
- William P. Ross,7 本必读的 Python 书籍
较长的评论
如果您需要帮助来确定这本书是否适合您,请查看下面链接的一些“较长”评论。 (如果您写了评论,请告诉我,我很乐意将其添加到列表中)。
- 特许 IT 学院 Patrick Hill 的 Python 机器学习评论
- 书评:Python 机器学习 作者:Sebastian Raschka 作者:Alex Turner,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”
文献参考和进一步阅读资源
勘误表
附赠笔记本(不在书中)
- 逻辑回归实现 [dir] [ipynb] [nbviewer]
- 基本管道和网格搜索设置 [dir] [ipynb] [nbviewer]
- 扩展嵌套交叉验证示例 [dir] [ipynb] [nbviewer]
- 一个简单的 Barebones Flask Web 应用程序模板 [查看目录][下载为 zip 文件]
- 将 MNIST 中的手写数字读取到 NumPy 数组中 [GitHub ipynb] [nbviewer]
- 使用 JSON 的 Scikit-learn 模型持久化 [GitHub ipynb] [nbviewer]
- 多项式逻辑回归/softmax回归 [GitHub ipynb] [nbviewer]
“相关内容”(书中没有)
- 机器学习中的模型评估、模型选择和算法选择 - 第一部分
- 机器学习中的模型评估、模型选择和算法选择 - 第二部分
- 机器学习中的模型评估、模型选择和算法选择 - 第三部分
SciPy 2016
我们在奥斯汀举行的 2016 年 SciPy 大会上度过了一段愉快的时光!与我的书的这么多读者见面并聊天真是一件很高兴的事。非常感谢所有的好话和反馈!如果您错过了,Andreas Mueller 和我介绍了 Scikit-learn 的机器学习;如果您有兴趣,第一部分和第二部分的视频现已上线!
PyData 芝加哥 2016
我在 2016 年 PyData 芝加哥大会上尝试了一项相当具有挑战性的任务,即在短短90 分钟内介绍 scikit-learn 和机器学习。幻灯片和教程材料可在“学习 scikit-learn - Python 机器学习简介”中找到。
笔记
我建立了一个单独的库mlxtend
,其中包含机器学习(和一般“数据科学”)算法的其他实现。我还添加了本书中的实现(例如,决策区域图、人工神经网络和顺序特征选择算法)以及附加功能。
翻译
亲爱的读者,
首先,我要感谢大家的大力支持!我对你们迄今为止给我的所有反馈感到非常高兴,我很高兴这本书对广大读者如此有用。
在过去的几个月里,我收到了数百封电子邮件,我尝试在可用时间内回复尽可能多的电子邮件。为了使它们对其他读者也有用,我在常见问题解答部分(如下)中收集了许多答案。
另外,有些人问我有没有一个平台可以让读者讨论这本书的内容。我希望这能为您提供一个与其他读者讨论和分享您的知识的机会:
Google 网上论坛讨论区
(如果时间允许,我会尽力自己回答问题!:))
好的建议唯一要做的就是将其传递下去。对自己来说从来没有任何用处。
——奥斯卡·王尔德
读者的示例和应用
我不得不再次说(大!)感谢所有关于这本书的良好反馈。我收到了许多来自读者的电子邮件,他们将本书中的概念和示例应用到现实世界中,并在他们的项目中充分利用它们。在本节中,我将开始收集其中一些出色的应用程序,并且我非常乐意将您的项目添加到此列表中 - 只需给我发一封快速邮件即可!
- Richard Lyman 的 40 个关于光学字符识别的脚本
- Jeremy Nation 的代码实验
- 我在 Python 中从头开始实现分类器所学到的知识 作者:Jean-Nicholas Hould
常问问题
一般问题
- 什么是机器学习和数据科学?
- 为什么您和其他人有时会从头开始实现机器学习算法?
- 我应该关注数据科学的哪些学习路径/学科?
- 人们应该从什么时候开始为开源做出贡献?
- 您认为导师对于学习过程有多重要?
- 以数据科学/机器学习或 Python 为中心的最佳在线社区在哪里?
- 您如何向软件工程师解释机器学习?
- 您为机器学习初学者提供的课程是什么样的?
- 数据科学的定义是什么?
- 数据科学家如何进行模型选择?和Kaggle有什么不同吗?
有关机器学习领域的问题
- 人工智能和机器学习有何关系?
- 机器学习在该领域的应用有哪些现实例子?
- 数据挖掘有哪些不同的研究领域?
- 机器学习和数据挖掘这两个领域的研究性质有何差异?
- 我如何知道问题是否可以通过机器学习解决?
- 机器学习的起源是什么?
- 分类作为一种学习机器是如何开发的?
- 哪些机器学习算法可以被认为是最好的?
- 分类器的大致类别有哪些?
- 分类器和模型有什么区别?
- 参数学习算法和非参数学习算法有什么区别?
- 机器学习中的成本函数和损失函数有什么区别?
有关 ML 概念和统计的问题
成本函数和优化
- 通过闭式方程拟合模型、梯度下降、随机梯度下降、小批量学习——有什么区别?
- 如何导出线性回归和 Adaline 的梯度下降规则?
回归分析
树模型
- 随机森林模型如何工作?它与集成模型中的 bagging 和 boosting 有什么不同?
- 对于大型数据集使用经典决策树算法有哪些缺点?
- 为什么决策树算法的实现通常是二元的,不同杂质指标的优点是什么?
- 为什么我们通过熵而不是分类误差来生长决策树?
- 随机森林什么时候可以表现得很糟糕?
模型评估
- 什么是过拟合?
- 如何避免过度拟合?
- 在执行交叉验证时,拥有尽可能多的折叠数总是更好吗?
- 训练 SVM 分类器时,支持向量的数量是多好还是少好?
- 如何评估模型?
- 多类分类的最佳验证指标是什么?
- 选择预测模型技术时应该考虑哪些因素?
- 帮助可视化和理解分类器行为的最佳玩具数据集是什么?
- 如何选择 SVM 内核?
- 插曲:交叉验证中性能指标的比较和计算——不平衡类问题和计算 F1 分数的 3 种不同方法
逻辑回归
- 什么是 Softmax 回归以及它与 Logistic 回归有何关系?
- 为什么逻辑回归被视为线性模型?
- 正则化逻辑回归的概率解释是什么?
- 逻辑回归中的正则化是否总是能带来更好的拟合和更好的泛化效果?
- 朴素贝叶斯和逻辑回归之间的主要区别是什么?
- 机器学习中的“softmax 和多项式逻辑损失”到底是什么?
- 逻辑回归和神经网络之间有什么关系以及何时使用哪个?
- 逻辑回归:为什么使用 sigmoid 函数?
- 逻辑回归是否有类似于线性回归正态方程的解析解?
神经网络和深度学习
- 深度学习和通常的机器学习有什么区别?
- 您能对神经网络的反向传播算法给出直观的解释吗?
- 为什么深度网络花了这么长时间才被发明?
- 有哪些学习深度学习的好书/论文?
- 为什么有这么多深度学习库?
- 为什么有些人讨厌神经网络/深度学习?
- 我如何知道深度学习对于特定问题是否比 SVM 或随机森林更有效?
- 当我的神经网络的误差增加时,出了什么问题?
- 如何调试人工神经网络算法?
- 感知器、Adaline 和神经网络模型之间有什么区别?
- Dropout技术背后的基本思想是什么?
其他监督学习算法
无监督学习
半监督学习
集成方法
预处理、特征选择和提取
- 为什么我们需要重新使用训练参数来转换测试数据?
- 机器学习中有哪些不同的降维方法?
- LDA和PCA降维有什么区别?
- 我什么时候应该应用数据规范化/标准化?
- 均值居中或特征缩放是否会影响主成分分析?
- 如何解决具有大量特征的机器学习问题?
- 处理缺失数据的常见方法有哪些?
- 用于特征选择的过滤器、包装器和嵌入式方法有什么区别?
- 数据准备/预处理步骤是否应该被视为特征工程的一部分?为什么或为什么不呢?
- 用于文本分类的词袋特征表示是否被视为稀疏矩阵?
朴素贝叶斯
- 为什么朴素贝叶斯分类器是朴素的?
- 朴素贝叶斯的决策边界是什么?
- 我可以对混合变量类型使用朴素贝叶斯分类器吗?
- 是否可以在朴素贝叶斯中混合不同的变量类型,例如二元和连续特征?
其他
- 机器学习中的欧几里得距离是什么?
- 什么时候应该使用中位数,而不是均值或平均数?
用于数据科学和机器学习的编程语言和库
- 如今,R 在数据科学中广泛使用吗?
- TensorFlow 和 scikit-learn 之间的主要区别是什么?
关于本书的问题
- 我可以在演示文稿或博客中使用书中的段落和图像吗?
- 这与其他机器学习书籍有何不同?
- 代码示例中使用了哪个版本的 Python?
- 正在使用哪些技术和库?
- 您会推荐哪种书籍版本/格式?
- 为什么选择 Python 进行机器学习?
- 为什么在代码示例中使用如此多的前导和尾随下划线?
- 代码示例中
return self
习惯用法的目的是什么? - 有什么先决条件和推荐的预读材料吗?
- 如何将 SVM 应用于分类数据?
接触
我很高兴回答问题!只需给我写一封电子邮件或考虑在 Google 网上论坛电子邮件列表中提问即可。
如果您有兴趣保持联系,我有一个非常活跃的推特流(@rasbt),所有内容都是关于数据科学和机器学习的。我还维护一个博客,发布所有令我特别兴奋的事情。