前 言
本书读者对象
本书是为能够编程并能快速掌握Python基本知识的人编写的。读者不需要有任何机器学习的经验。理想读者是愿意从事机器学习工作的软件工程师。然而,需要为学习和业余项目编写代码的积极向上的大学生阅读本书后同样会受益匪浅。
此外,那些已经在使用机器学习但想了解更多的人也会发现本书很有帮助。许多已经担任数据科学家和数据分析师的人都表示,本书对他们很有帮助,特别是关于部署的章节。
本书组织结构
本书一共包含9章内容,共研究了4个不同的项目。
● 第1章讨论传统软件工程与机器学习的区别;介绍组织机器学习项目的过程,涵盖从最初了解业务需求到最后部署模型的步骤;还详细地介绍过程中的建模步骤并讨论应该如何评估模型和选择最好的模型。为说明该章中的概念,运用了垃圾邮件检测案例。
● 第2章给出第一个项目——预测一辆汽车的价格。我们将学习如何对其使用线性回归。首先准备一个数据集并做一些数据清理。接下来,进行探索性数据分析,以更好地理解数据。然后用NumPy建立一个线性回归模型,以了解机器学习模型内部运转机制。最后讨论正则化和模型质量评估等话题。
● 第3章解决客户流失预测问题。该章假设我们在一家电信公司工作,想要确定哪些客户可能很快停止使用我们的服务。这是一个用逻辑回归来解决的分类问题。我们从特征重要性分析入手,了解哪些因素对这个问题最为重要。然后讨论作为处理分类变量(性别、合同类型等因素)方式的独热编码。最后,用Scikit-Learn训练一个逻辑回归模型,以了解哪些客户即将流失。
● 第4章采用第3章建立的模型并对其性能进行评估。该章涵盖最重要的分类评估指标:准确度、查准率和查全率。我们讨论了混淆矩阵,然后具体讲述ROC分析和AUC计算。该章最后讨论K折交叉验证。
● 第5章将客户流失预测模型作为一个Web服务进行部署。这是整个过程中的一个重要步骤,因为如果不使模型变得可用,那么它对任何人都没有用处。首先介绍用于创建Web服务的Python框架Flask。然后用Pipenv和Docker进行依赖项管理并在AWS上完成服务的部署。
● 第6章介绍一个关于风险评分的项目。我们想了解银行的客户是否会有还贷问题。为此,我们学习决策树的工作原理并用Scikit-learn训练一个简单的模型。然后,转向更复杂的基于树的模型,如随机森林和梯度提升。
● 第7章构建一个图像分类项目。我们将训练一个模型,将服装图像分为T恤、衣服、裤子等10个类别。我们使用TensorFlow和Keras来训练模型,此外介绍迁移学习的内容,因为它能够用相对较小的数据集训练模型。
● 第8章采用第7章中训练的服装分类模型,并且用TensorFlow Lite和AWS Lambda进行部署。
● 第9章部署服装分类模型,但在第一部分使用Kubernetes和TensorFlow Serving,在第二部分使用Kubeflow和Kubeflow Serving。
为帮助你更好地阅读本书以及了解Python和它的库,我们提供了5个附录。
● 附录A介绍如何设置针对本书的环境,展示如何安装Anaconda和Python、如何运行Jupyter Notebook、如何安装Docker以及如何创建AWS账户。
● 附录B介绍Python的基础知识。
● 附录C涵盖NumPy的基本知识,并且简要介绍机器学习所需的最重要的线性代数概念:矩阵乘法和矩阵求逆。
● 附录D介绍Pandas。
● 附录E解释如何在AWS SageMaker上获得带有GPU的Jupyter Notebook。
这些附录是选读的,但它们都很有帮助,尤其是若你之前没使用过Python或AWS。
你不必从头至尾地阅读本书。为帮助你导航,可以使用下列指南。
其中第2、3章的内容最重要,其余章节的内容都基于这两章。阅读完第2、3章的内容后,可以跳到第5章学习模型部署、到第6章学习基于树的模型或者到第7章学习图像分类。第4章讲解的评估指标基于第3章的内容:评估第3章的客户流失预测模型的质量。第8、9章将部署图像分类模型,因此在此之前先阅读第7章是很有帮助的。
每一章几乎都包括练习。做这些练习很重要,它们会帮助你更好地记住相关内容。