29 KiB
Note
本文档由 WeHub 基于上游 README 翻译整理,属于社区翻译,非官方中文文档。
English · 原始项目 · 上游 README
原作者、版权与许可证归属以原始项目及本仓库 LICENSE 文件为准。
Python Machine Learning 图书代码仓库
重要提示(2017/09/21):
本 GitHub 仓库包含《Python Machine Learning》第 1 版的代码示例。若你需要 第 2 版的代码示例,请参阅此 仓库。
本书共 400 页,内容丰富实用,涵盖入门机器学习所需的大部分知识……从理论到可直接付诸实践的代码!这绝非又一本“scikit-learn 用法手册”。我的目标是解释所有底层概念,告诉你最佳实践与注意事项,并主要通过 NumPy、scikit-learn 和 Theano 将这些概念付诸实践。
不确定这本书是否适合你?请查阅序言和前言的节选,或查看 FAQ 部分了解更多信息。
第 1 版,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
目录与代码 Notebook
只需点击各章标题旁的 ipynb/nbviewer 链接即可查看代码示例(目前,内部文档链接仅 NbViewer 版本支持)。
请注意,这些只是我为方便大家上传的随书代码示例;若无公式与说明文字,这些 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]
公式参考
教学幻灯片
衷心感谢 Dmitriy Dligach 分享其机器学习课程幻灯片,该课程目前在 Loyola University Chicago. 开设。
补充数学与 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.
反馈与评论
简短书评摘录
Sebastian Raschka 的新书《Python Machine Learning》刚刚出版。我有机会阅读了审阅版,结果正如我所料——非常棒!结构清晰、极易上手,不仅为聪明的非专业人士打下了良好基础,从业者也能从中获得灵感并学到新技巧。
– Lon Riesberg,Data Elixir
出色的工作!到目前为止,在我看来它在理论与实践的把握上恰到好处……数学与代码兼顾!
– Brian Thomas
我(几乎)读过所有围绕 Scikit-learn 的机器学习书籍,这本无疑是其中最好的一本。
– Jason Wolosonovich
这是我见过的 PACKT Publishing 出品的最佳图书。这是一本写得非常好的 Python 机器学习入门书。正如其他人所指出的,理论与应用的结合堪称完美。
– Josh D.
一本很难得的、兼具多种优点的书:将掌控理论所需的数学与应用性的 Python 编码结合起来。也很高兴看到它没有像许多其他书那样,为了迎合更广泛的读者而浪费篇幅去介绍 Python 入门。可以看出它是由有见地的作者所写,而不只是 DIY 爱好者。
– Amazon Customer
Sebastian Raschka 创作了一份精彩的机器学习教程,将理论与实践相结合。该书从理论角度解释机器学习,并有大量代码示例展示如何实际运用机器学习技术。初学者或高级程序员都可以阅读。
- William P. Ross,7 Must Read Python Books
较长书评
如果你需要帮忙判断是否适合阅读本书,可以查看下方链接中的一些“较长”书评。(如果你写过书评,请告诉我,我很乐意将其加入列表。)
- Python Machine Learning Review,作者 Patrick Hill,发表于英国特许信息技术学会(Chartered Institute for IT)
- Book Review: Python Machine Learning by 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" 出版
文献参考与延伸阅读资源
勘误
附赠 Notebook(书中未收录)
- Logistic Regression Implementation [dir] [ipynb] [nbviewer]
- A Basic Pipeline and Grid Search Setup [dir] [ipynb] [nbviewer]
- An Extended Nested Cross-Validation Example [dir] [ipynb] [nbviewer]
- A Simple Barebones Flask Webapp Template [view directory][download as zip-file]
- Reading handwritten digits from MNIST into NumPy arrays [GitHub ipynb] [nbviewer]
- Scikit-learn Model Persistence using JSON [GitHub ipynb] [nbviewer]
- Multinomial logistic regression / softmax regression [GitHub ipynb] [nbviewer]
"相关内容"(书中未收录)
- Model evaluation, model selection, and algorithm selection in machine learning - Part I
- Model evaluation, model selection, and algorithm selection in machine learning - Part II
- Model evaluation, model selection, and algorithm selection in machine learning - Part III
SciPy 2016
我们在奥斯汀参加的 SciPy 2016 度过了非常愉快的时光!能与这么多本书的读者见面交流,真是莫大的荣幸。非常感谢大家的赞誉与反馈!如果你错过了,Andreas Mueller 和我曾做过一场 Introduction to Machine Learning with Scikit-learn;如果你感兴趣,Part I 和 Part II 的视频录像现已上线!
PyData Chicago 2016
我曾在 PyData Chicago 2016 上尝试完成一项颇具挑战的任务:在仅仅 90 分钟内介绍 scikit-learn 与机器学习(machine learning)。幻灯片与教程材料可在「Learning scikit-learn -- An Introduction to Machine Learning in Python.」获取。
说明
我另外搭建了一个独立库 mlxtend,,其中包含更多机器学习(以及一般意义上的「数据科学」)算法的实现。我还加入了本书中的若干实现(例如决策区域图、人工神经网络,以及序列特征选择算法),并补充了额外功能。
译本
亲爱的读者们,
首先,我要感谢大家对本书的大力支持!我非常高兴收到你们迄今为止发来的诸多精彩反馈,也很欣慰这本书能对广大读者如此有用。
过去几个月里,我收到了数百封邮件,并尽力在有限时间内尽可能多地回复。为了让这些回答也能惠及其他读者,我将其中许多内容整理进了下方的 FAQ 部分。
此外,有些人询问是否有供读者讨论本书内容的平台。我希望这能为大家提供一个与其他读者交流、分享知识的机会:
Google Groups 讨论区
(若时间允许,我也会尽力亲自回答问题!:))
对于好建议,唯一该做的事就是把它传递下去。它对自己从来毫无用处。
— Oscar Wilde
读者示例与应用
再次向大家对本书的积极反馈致以(大大的!)感谢。我收到许多读者来信,他们将本书的概念与示例付诸实践,并在各自项目中善加运用。在本节中,我开始收集其中一些精彩应用;若你愿意,我很乐意把你的项目也加入这份列表——发封简短邮件即可!
- 40 个光学字符识别(Optical Character Recognition)脚本,作者 Richard Lyman
- 代码实验,作者 Jeremy Nation
- 从零用 Python 实现分类器,我学到了什么,作者 Jean-Nicholas Hould
FAQ
一般问题
- 什么是机器学习与数据科学?
- 为什么你和其他人有时会从零实现机器学习算法?
- 在数据科学中,我应专注于哪条学习路径/学科方向?
- 应在何时开始为开源项目做贡献?
- 你认为拥有导师对学习过程有多重要?
- 围绕数据科学/机器学习或 Python 的最佳在线社区有哪些?
- 你会如何向软件工程师解释机器学习?
- 你为机器学习初学者设计的课程大纲会是什么样?
- 数据科学的定义是什么?
- 数据科学家如何进行模型选择?这与 Kaggle 有何不同?
关于机器学习领域的问题
- 人工智能(Artificial Intelligence)与机器学习有何关联?
- 机器学习在该领域有哪些真实世界应用示例?
- 数据挖掘(data mining)包含哪些不同的研究领域?
- 机器学习与数据挖掘这两个领域的研究性质有何差异?
- 如何判断一个问题能否通过机器学习解决?
- 机器学习的起源是什么?
- 分类器作为学习机器是如何发展起来的?
- 哪些机器学习算法可被视为最佳之列?
- 分类器有哪些大类?
- 分类器(classifier)与模型(model)有何区别?
- 参数学习算法(parametric learning algorithm)与非参数学习算法(nonparametric learning algorithm)有何区别?
- 机器学习中代价函数(cost function)与损失函数(loss function)有何区别?
关于机器学习概念与统计学的问题
代价函数与优化
- 通过闭式方程拟合模型 vs. 梯度下降(Gradient Descent)vs 随机梯度下降(Stochastic Gradient Descent)vs 小批量学习(Mini-Batch Learning)——有何区别?
- 如何推导线性回归(Linear Regression)与 Adaline 的梯度下降规则?
回归分析
树模型
- 随机森林(random forest)模型如何工作?它与集成模型中的 bagging 和 boosting 有何不同?
- 对大型数据集使用经典决策树算法有哪些缺点?
- 为什么决策树算法的实现通常是二分的?不同不纯度指标各有何优势?
- 为什么我们通过熵(entropy)而非分类误差来生长决策树?
- 随机森林何时可能表现极差?
模型评估
- 什么是过拟合(overfitting)?
- 如何避免过拟合?
- 进行交叉验证(cross validation)时,折数(fold)是否越多越好?
- 训练 SVM 分类器时,支持向量(support vector)数量多些好还是少些好?
- 如何评估模型?
- 多类分类(multi-class classification)的最佳验证指标是什么?
- 选择预测建模技术时应考虑哪些因素?
- 哪些最佳玩具数据集有助于可视化并理解分类器行为?
- 如何选择 SVM 核函数(kernel)?
- 插曲:在交叉验证中比较与计算性能指标——类别不平衡问题与计算 F1 分数的 3 种不同方法
逻辑回归(Logistic Regression)
- 什么是 Softmax 回归?它与逻辑回归有何关系?
- 为什么逻辑回归被视为线性模型?
- 正则化逻辑回归的概率解释是什么?
- 逻辑回归中的正则化是否总能带来更好的拟合和更好的泛化?
- 朴素贝叶斯(Naive Bayes)与逻辑回归的主要区别是什么?
- 在机器学习语境下,"softmax 与多项逻辑损失(multinomial logistic loss)"究竟指什么?
- 逻辑回归与神经网络有何关系?应何时选用哪一种?
- 逻辑回归:为何使用 sigmoid 函数?
- 逻辑回归是否存在类似线性回归正规方程(Normal Equation)的解析解?
神经网络与深度学习(Neural Networks and Deep Learning)
- 深度学习与常规机器学习有何区别?
- 能否用可视化方式解释神经网络的反向传播(back propagation)算法?
- 为何深度网络的发明花了这么长时间?
- 学习深度学习有哪些好书/论文?
- 为何深度学习库如此之多?
- 为何有人反感神经网络/深度学习?
- 如何判断深度学习是否比 SVM 或随机森林更适合某个具体问题?
- 神经网络误差上升时问题出在哪里?
- 如何调试人工神经网络算法?
- 感知机(Perceptron)、Adaline 与神经网络模型有何区别?
- Dropout 技术的基本思路是什么?
其他监督学习算法
无监督学习(Unsupervised Learning)
半监督学习(Semi-Supervised Learning)
集成方法(Ensemble Methods)
预处理、特征选择与特征提取
- 为何需要用训练集拟合的参数来变换测试数据?
- 机器学习中有哪些降维(dimensionality reduction)方法?
- 降维时 LDA 与 PCA 有何区别?
- 何时应进行数据归一化/标准化(normalization/standardization)?
- 均值中心化或特征缩放会影响主成分分析(Principal Component Analysis)吗?
- 面对特征数量很多的机器学习问题,该如何着手?
- 处理缺失数据有哪些常见做法?
- 特征选择的 filter、wrapper 与 embedded 方法有何区别?
- 数据准备/预处理是否应算作特征工程的一部分?为什么?
- 文本分类中的词袋(bag of words)特征表示是否可视为稀疏矩阵?
朴素贝叶斯(Naive Bayes)
其他
数据科学与机器学习的编程语言与库
关于本书的问题
- 我能否在演示或博客中使用书中的段落与图片?
- 本书与其他机器学习书籍有何不同?
- 代码示例使用的是哪个 Python 版本?
- 使用了哪些技术与库?
- 你推荐哪个版本/格式的书?
- 为何选择 Python 做机器学习?
- 代码示例中为何使用这么多前导与尾随下划线?
- 代码示例中
return self惯用法有何用途? - 有哪些先修要求与推荐阅读?
- 如何将 SVM 用于分类数据?
联系方式
我很乐意回答问题!请给我写邮件 ,或在 Google Groups 邮件列表. 上提问。
若想保持联系,我的 Twitter (@rasbt) 上常有数据科学与机器学习相关动态。我还在博客 分享我特别感兴趣的内容。













