scikit-learn 库是 Python 中领先的机器学习库。
在线文档相当不错,但有时可能会感觉零散或受到狭窄示例的限制。
在这篇文章中,您将了解 Trent Hauck 的著作《Scikit-Learn Cookbook》,它提供了一个桌面参考来补充在线文档,并帮助您快速入门 scikit-learn。
通过我的新书 《Machine Learning Mastery With Python》 分步教程和所有示例的Python源代码文件,快速启动您的项目。
我们开始吧。
书籍概述
《Scikit-Learn Cookbook》是一本由 Trent Hauck 撰写、由 Packt Publishing 出版的专注于书籍。
这本书的副标题是
超过 50 个食谱,将 scikit-learn 融入数据科学管道的每个步骤,从特征提取到模型构建和模型评估。
它于 2014 年底出版,篇幅不到 200 页。我喜欢它的尺寸。如今,厚重的参考书籍让我望而却步(想想我书架上引以为豪的《Numerical Recipes》)。我宁愿有 10 本小巧、专注于特定主题的参考书,就像一套迷你百科全书。
我喜欢这是一本小巧、精准、专注于 scikit-learn 食谱的书籍。
目标读者
这本书不适合机器学习初学者。请注意。
它假定读者
- 熟悉 Python。
- 熟悉 SciPy 栈。
- 熟悉机器学习。
这些对于已经在项目中使用 scikit-learn 的人来说是合理的假设,在这种情况下,这本书可以作为桌面参考,用于查询特定的临时机器学习任务。
图书内容
这本书包含 50 个食谱?(如果我信任目录和我自己的计算,可能 57 个食谱)分为 5 章。
- 第 1 章:预模型工作流程
- 第 2 章:使用线性模型
- 第 3 章:使用距离度量构建模型
- 第 4 章:使用 scikit-learn 对数据进行分类
- 第 5 章:后模型工作流程
这些章节通常映射到标准数据科学项目的流程
- 获取和准备数据。
- 尝试一些线性模型
- 尝试一些非线性模型
- 尝试更多非线性模型。
- 最终确定模型
这是一个可以接受的书籍结构,问题在于 scikit-learn 本身并不能很好地服务于所有这些步骤。它在建模方面表现出色,在数据预处理方面做得也不错,但在数据加载和数据分析方面却很差,而这些步骤通常被忽略了。
接下来我们将逐步介绍每一章。
需要 Python 机器学习方面的帮助吗?
参加我为期 2 周的免费电子邮件课程,探索数据准备、算法等等(附带代码)。
立即点击注册,还将免费获得本课程的 PDF 电子书版本。
章节概述
在本节中,我们将仔细研究五个章节中的食谱。
第 1 章:预模型工作流程
本章侧重于数据准备。也就是说,重新格式化数据以最好地暴露机器学习算法可能在以后使用的模型结构。
本章有 17 个食谱,我可以将它们分组如下
- 数据加载:加载您自己的数据并使用内置数据集。
- 数据清洗:处理缺失值等任务。
- 数据预处理:缩放和特征工程。
- 降维:SVD、PCA 和因子分析。
- 其他:管道、高斯过程和梯度下降。
我很遗憾我不得不自己设计结构。我也很遗憾有一个“其他”类别。这表明章节中食谱的组织可以更清晰。
我希望有更多关于缩放方法的独立食谱。在可以使用数据集之前,我发现自己经常对它们进行缩放。这可能是获得良好结果最常见的预处理步骤。
第 2 章:使用线性模型
本章的重点是线性模型。这本较短的章节包含 9 个食谱。
通常,本章中的食谱涵盖
- 线性回归
- 正则化回归
- 逻辑回归
- 更复杂的回归变体,如提升。
这是另一个奇怪的食谱组合。
我猜我的感觉是,线性模型的重点可以进一步扩展到 LDA、感知器以及平台支持的其他模型,而不限于回归。
第 3 章:使用距离度量构建模型
许多算法的核心都使用距离度量。
首先想到的可能是 KNN,但实际上你可以更广泛地解释它,并纳入诸如支持向量机及其使用核的关联技术。
本章侧重于使用距离度量的技术,并且几乎完全专注于 K-Means(本章 9 个食谱中的 8 个)。章节末尾有一个 KNN 食谱。
本章应该被称为聚类或 K-Means。
另外,值得注意的是我的偏见,我根本不使用聚类方法,我觉得它们对预测模型毫无用处。
第 4 章:使用 scikit-learn 对数据进行分类
从标题来看,本章是关于分类算法的。
我会将本章的 11 个食谱组织如下
- 决策树(CART 和随机森林)
- 支持向量机
- 判别分析(LDA 和 QDA)
- 朴素贝叶斯
- 其他(半监督学习、梯度下降等)
我会将 LDA 和 QDA 放在线性模型章节(第 2 章),并且我会添加更多算法。scikit-learn 的一个主要优势是它开箱即用地提供了如此多的算法。
本章中涵盖的算法没问题,我的意思是我想将食谱的数量增加一倍或三倍,并使算法食谱成为本书的重点。
第 5 章:后模型工作流程
本章包含 11 个关于通用后建模任务的食谱。
这是技术性且不准确的,因为您会在建模过程中执行这些任务,尽管如此,我明白作者的意图。
我会将本章的食谱总结如下
- 重采样方法(交叉验证及其变体)。
- 算法调优(网格搜索、随机搜索、手动搜索等)。
- 特征选择。
- 其他(模型持久化、模型评估和基线)。
一个涵盖重要主题的好章节。非常重要的话题。
总的来说,我会在 k 折交叉验证的背景下介绍每种算法,因为对于大多数用例来说,以其他方式评估算法可能不是一个好主意。
我也很惊讶地看到特征选择在书中这么靠后。我本以为它会出现在第 1 章。它属于数据准备部分。
对本书的看法
这本书很好。我推荐给那些正在寻找好的桌面参考来支持 scikit-learn 在线文档的人。
我通常喜欢每道食谱的呈现方式。事实上,它好到有些冗长,而在其他书中,食谱可能过于简短。结构如下
- 食谱名称和描述。
- 准备工作(例如,先决条件或要求)。
- 如何操作(实际代码和实现结果所需的步骤)。
- 工作原理(关于 API 或过程的额外解释)。
- 还有更多(食谱的可选附加变体,非常有用)。
鉴于以上软推荐,我在阅读时注意到了一些事情。
许多食谱的内容让我感到沮丧。以至于我不会将它们用作我自己的 scikit-learn 食谱库的参考,我将在项目中使用这些食谱。
我使用 scikit-learn 已经有一段时间了,我花时间阅读并尝试了大部分 API。这本书中的许多食谱都是手工制作的函数,而这些函数实际上已经在 scikit-learn API 中存在。也许 API 在出版后已经更新,或者没有,但这确实困扰了我。更少的代码意味着更少的维护,如果您正在使用 scikit-learn 这样的库,那么您应该充分利用它。
此外,通常在解释中会穿插一些公式。它们主要用于提供技术的简短描述并避免冗长的解释。这没关系,但最好将其省略,并指向一个好的参考文本,同时保持对 scikit-learn API 的专注。
有些食谱太长了。我喜欢简洁、专注且自成一体的。我可以复制粘贴并用于启动自己项目中的一个过程。
您无法涵盖整个 scikit-learn API,而本书的覆盖范围相当不错。它涵盖了库的关键部分。我希望看到它更详细地涵盖区分该库的某些方面,例如管道、学习曲线和模型校准。
总结
在这篇文章中,您了解了 Trent Hauck 的著作《Scikit-Learn Cookbook》。
您了解到它是一本包含 50 多个食谱的书,用于使用 scikit-learn,涵盖的主题包括
- 数据准备。
- 线性和非线性算法。
- 模型评估和算法调优。
这是一本不错的食谱书,可以用作桌面参考,以补充 scikit-learn 库的在线文档。
您对这本书有什么疑问吗?您读过这本书吗?留下评论,告诉我您的想法。
暂无评论。