《Python机器学习项目实战》引领大家在构建实际项目的过程中,掌握关键的机器学习概念!使用机器学习,我们可完成客户行为分析、价格趋势预测、风险评估等任务。要想掌握机器学习,需要有优质的范例、清晰的讲解和大量的练习。本书完全满足这三点! 本书展示了现实、实用的机器学习场景,并全面、清晰地介绍了机器学习的关键概念。在学习本书的过程中,读者将会完成一些引人入胜的项目,比如使用线性回归预测汽车价格,部署客户流失预测服务等。读者将**算法,学习在无服务器系统上部署机器学习应用,以及使用Kubernetes和Kubeflow服务模型等重要技术。大家埋头苦学,亲自动手,享受掌握机器学习技能的乐趣! 主要内容 ●收集和清理训练模型的数据 ●使用流行的Python工具,包括NumPy、Scikit-Learn和TensorFlow ●将机器学习模型部署到生产环境中 阅读门槛 读者需要有Python编程技能,不需要具备机器学习知识。
随着大数据时代的到来以及计算机算力的提升,机器学习进入一个新时代。以最近火热的ChatGPT为例,它是美国人工智能研究实验室OpenAI开发的一种全新聊天机器 人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动并协助人类完成一系列任务。它的发展可谓是机器学习的巨大飞跃,甚至可以视为人类迈向真人工智能的巨大跨越。随着机器学习技术的发展以及在各行各业的应用,可以说机器学习现在与我们每个人都息息相关。
作为一名大学教师,我的主要研究领域为人工智能和深度学习,目前为研究生讲授《模式识别》等课程;同时也参与了多个与机器学习相关的科研项目,对机器学习的工程应用有丰富的经验。当看到《Python机器学习项目实战》时,我感觉非常有必要将其翻译出来并让更多的人学习到其中的内容。本书是一本针对机器学习与聚焦实践经验的实用指南,适用于对数据科学感兴趣并需要快速获得有用和可重用经验(针对数据和数据问题)的相关开发人员。建议大家在学习本书时,除了逐字逐句地认真阅读外,还必须要付诸实践。衷心希望读者能够通过本书成为机器学习的高手和大师。
本书读者对象
本书是为能够编程并能快速掌握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章是很有帮助的。
每一章几乎都包括练习。做这些练习很重要,它们会帮助你更好地记住相关内容。
Alexey Grigorev与家人居住在柏林。他是一名经验丰富的软件工程师,专注于机器学习。他在OLX集团担任首席数据科学家,帮助同事们将机器学习应用于生产。
工作之余,Alexey还运营着DataTalks.Club一个由喜欢数据科学和机器学习的爱好者组成的社区。他还出版过另外两本著作:Mastering Java for Data Science和TensorFlow Deep Learning Projects。
第1章 机器学习简介 1
1.1 机器学习 1
1.1.1 机器学习与基于规则的方法 3
1.1.2 当机器学习不起作用时 6
1.1.3 监督机器学习 6
1.2 机器学习过程 7
1.2.1 问题理解 8
1.2.2 数据理解 9
1.2.3 数据准备 9
1.2.4 建模 9
1.2.5 评估 9
1.2.6 部署 10
1.2.7 迭代 10
1.3 建模和模型验证 10
1.4 本章小结 14
第2章 用于回归的机器学习 15
2.1 汽车价格预测项目 15
2.2 探索性数据分析 17
2.2.1 探索性数据分析工具箱 17
2.2.2 读取和准备数据 19
2.2.3 目标变量分析 21
2.2.4 检查缺失值 23
2.2.5 验证框架 24
2.3 机器学习之回归 27
2.3.1 线性回归 27
2.3.2 训练线性回归模型 33
2.4 预测价格 35
2.4.1 基本解决方案 35
2.4.2 RMSE:评估模型质量 37
2.4.3 验证模型 40
2.4.4 简单的特征工程 41
2.4.5 处理分类变量 43
2.4.6 正则化 47
2.4.7 使用模型 50
2.5 后续步骤 51
2.5.1 练习 51
2.5.2 其他项目 52
2.6 本章小结 52
2.7 习题答案 53
第3章 用于分类的机器学习 55
3.1 客户流失预测项目 55
3.1.1 电信客户流失数据集 56
3.1.2 初始数据准备 56
3.1.3 探索性数据分析 63
3.1.4 特征重要性 66
3.2 特征工程 73
3.3 机器学习之分类 76
3.3.1 逻辑回归 76
3.3.2 训练逻辑回归 79
3.3.3 模型解释 82
3.3.4 使用模型 88
3.4 后续步骤 90
3.4.1 练习 90
3.4.2 其他项目 90
3.5 本章小结 90
3.6 习题答案 91
第4章 分类的评估指标 93
4.1 评估指标 93
4.1.1 分类准确度 94
4.1.2 虚拟基线 96
4.2 混淆矩阵 97
4.2.1 混淆矩阵介绍 97
4.2.2 用NumPy计算混淆矩阵 99
4.2.3 查准率和查全率 103
4.3 ROC曲线和AUC分数 105
4.3.1 真正例率和假正例率 106
4.3.2 在多个阈值下评估模型 107
4.3.3 随机基线模型 109
4.3.4 理想模型 111
4.3.5 ROC曲线 114
4.3.6 AUC 118
4.4 参数调优 120
4.4.1 K折交叉验证 120
4.4.2 寻找最佳参数 122
4.5 后续步骤 124
4.5.1 练习 124
4.5.2 其他项目 125
4.6 本章小结 125
4.7 习题答案 126
第5章 部署机器学习模型 127
5.1 客户流失预测模型 127
5.1.1 使用模型 127
5.1.2 使用Pickle保存和加载模型 129
5.2 模型服务化 132
5.2.1 Web服务 132
5.2.2 Flask 133
5.2.3 使用Flask将流失模型服务化 135
5.3 管理依赖项 137
5.3.1 Pipenv 137
5.3.2 Docker 141
5.4 部署 144
5.5 后续步骤 148
5.5.1 练习 148
5.5.2 其他项目 148
5.6 本章小结 148
第6章 决策树与集成学习 149
6.1 信用风险评分项目 149
6.1.1 信用评分数据集 150
6.1.2 数据清理 150
6.1.3 准备数据集 155
6.2 决策树 157
6.2.1 决策树分类器 158
6.2.2 决策树学习算法 160
6.2.3 决策树的参数调优 166
6.3 随机森林 168
6.3.1 训练随机森林 170
6.3.2 随机森林的参数调优 171
6.4 梯度提升 174
6.4.1 XGBoost:极限梯度提升 175
6.4.2 模型性能监控 176
6.4.3 XGBoost的参数调优 178
6.4.4 测试最终模型 183
6.5 后续步骤 184
6.5.1 练习 184
6.5.2 其他项目 185
6.6 本章小结 185
6.7 习题答案 185
第7章 神经网络与深度学习 187
7.1 服装分类 187
7.1.1 GPU与CPU 188
7.1.2 下载服装数据集 188
7.1.3 TensorFlow和Keras 190
7.1.4 加载图像 191
7.2 卷积神经网络 192
7.2.1 使用预训练模型 192
7.2.2 获得预测 195
7.3 模型的内部结构 195
7.3.1 卷积层 196
7.3.2 致密层 198
7.4 训练模型 201
7.4.1 迁移学习 201
7.4.2 加载数据 201
7.4.3 创建模型 202
7.4.4 训练模型 205
7.4.5 调整学习速率 207
7.4.6 保存模型和设置检查点 210
7.4.7 添加更多的层 211
7.4.8 正则化和dropout 213
7.4.9 数据增强 216
7.4.10 训练更大的模型 220
7.5 使用模型 221
7.5.1 加载模型 221
7.5.2 评估模型 222
7.5.3 获得预测 223
7.6 后续步骤 224
7.6.1 练习 225
7.6.2 其他项目 225
7.7 本章小结 225
7.8 习题答案 226
第8章 无服务器深度学习 227
8.1 AWS Lambda 227
8.1.1 TensorFlow Lite 228
8.1.2 将模型转换为TF Lite格式 229
8.1.3 准备图像 229
8.1.4 使用TensorFlow Lite模型 231
8.1.5 lambda函数的代码 232
8.1.6 准备Docker镜像 234
8.1.7 将镜像推送到AWS ECR 235
8.1.8 创建lambda函数 236
8.1.9 创建API Gateway 239
8.2 后续步骤 243
8.2.1 练习 243
8.2.2 其他项目 244
8.3 本章小结 244
第9章 使用Kubernetes和Kubeflow
将模型服务化 245
9.1 Kubernetes和Kubeflow 245
9.2 使用TensorFlow Serving来
服务模型 246
9.2.1 服务架构概述 246
9.2.2 saved_model格式 247
9.2.3 本地运行TensorFlow Serving 248
9.2.4 从Jupyter调用TF Serving
模型 249
9.2.5 创建Gateway服务 252
9.3 使用Kubernetes部署模型 255
9.3.1 Kubernetes简介 255
9.3.2 在AWS上创建Kubernetes
集群 256
9.3.3 准备Docker镜像 258
9.3.4 部署到 Kubernetes 260
9.3.5 测试服务 265
9.4 使用Kubeflow部署模型 266
9.4.1 准备模型:上传到S3 267
9.4.2 使用KFServing部署TensorFlow
模型 267
9.4.3 访问模型 268
9.4.4 KFServing转换器 270
9.4.5 测试转换器 271
9.4.6 删除EKS集群 272
9.5 后续步骤 272
9.5.1 练习 272
9.5.2 其他项目 273
9.6 本章小结 273
附录A 环境准备 275
附录B Python简介 301
附录C Numpy简介 315
附录D Pandas简介 339
附录E AWS SageMaker 359