描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787111681373丛书名: 数据科学与工程技术丛书
适读人群:
想进入机器学习领域的初学者;
计算机及相关专业的学生;
想要向机器学习工程师、数据科学家转型的非开发岗人员;
使用过机器学习技术,但想要更加深入了解其工作原理的人员;
其他对机器学习、人工智能有兴趣的自学者
配套代码及彩色图表获取方式:
1、微信关注“华章计算机”
2、在后台回复关键词:68137
本书是使用Python进行机器学习和深度学习的全面指南。它既可以用作清晰的分步教程,也可以作为构建机器学习系统时常用的参考手册。本书包含清晰的解释、图表和工作示例,全面深入地介绍了机器学习的基本技术,并且给出了机器学习背后的原理,使你可以自己建立模型和应用程序。第3版结合TensorFlow 2和scikit-learn的新版本进行了更新,涵盖强化学习和生成对抗网络(GAN)这两种先进的机器学习技术。
机器学习将改变你解决问题的思路,并让你看到如何释放数据的力量来解决问题。无论你是Python机器学习的初学者还是想加深自己对前沿发展的了解,本书都是你不可或缺的好帮手。
本书自第1版出版以来,备受广大读者欢迎。与同类书相比,本书除了介绍如何用Python和基于Python的机器学习软件库进行实践外,还对机器学习概念的必要细节进行讨论,同时对机器学习算法的工作原理、使用方法以及如何避免掉入常见的陷阱提供直观且翔实的解释,是Python机器学习入门之作。它的内容涵盖了众多高效Python库,包括scikit-learn、Keras和TensorFlow等,系统性地梳理和分析了各种经典算法,并通过Python语言以具体代码示例的方式深入浅出地介绍了各种算法的应用,还给出了从情感分析到神经网络的一些实践技巧,这些内容能使你快速解决你和你的团队面临的一些重要问题。
译者序
前言
作者简介
审校者简介
第1章 赋予计算机从数据中学习的能力1
1.1 构建能把数据转换为知识的智能机器1
1.2 三种不同类型的机器学习1
1.2.1 用监督学习预测未来2
1.2.2 用强化学习解决交互问题3
1.2.3 用无监督学习发现隐藏的结构4
1.3 基本术语与符号4
1.3.1 本书中使用的符号和约定5
1.3.2 机器学习的术语6
1.4 构建机器学习系统的路线图6
1.4.1 预处理——整理数据6
1.4.2 训练和选择预测模型7
1.4.3 评估模型并对未曾谋面的数据进行预测8
1.5 将Python用于机器学习8
1.5.1 利用Python Package Index安装Python及其他软件包8
1.5.2 采用Anaconda Python发行版和软件包管理器8
1.5.3 用于科学计算、数据科学和机器学习的软件包9
1.6 本章小结9
第2章 训练简单的机器学习分类算法10
2.1 人工神经元——机器学习的早期历史10
2.1.1 人工神经元的正式定义11
2.1.2 感知器学习规则12
2.2 用Python实现感知器学习算法14
2.2.1 面向对象的感知器API14
2.2.2 在鸢尾花数据集上训练感知器模型16
2.3 自适应线性神经元和学习收敛20
2.3.1 通过梯度下降小化代价函数21
2.3.2 用Python实现Adaline22
2.3.3 通过特征缩放改善梯度下降26
2.3.4 大规模机器学习与随机梯度下降27
2.4 本章小结31
第3章 scikit-learn机器学习分类器32
3.1 选择分类算法32
3.2 了解scikit-learn的步——训练感知器32
3.3 基于逻辑回归的分类概率建模37
3.3.1 逻辑回归与条件概率37
3.3.2 学习逻辑代价函数的权重39
3.3.3 将Adaline实现转换为一个逻辑回归算法41
3.3.4 用scikit-learn训练逻辑回归模型44
3.3.5 通过正则化解决过拟合问题46
3.4 使用支持向量机化分类间隔48
3.4.1 对分类间隔化的直观认识48
3.4.2 用松弛变量解决非线性可分问题50
3.4.3 其他的scikit-learn实现51
3.5 用核支持向量机求解非线性问题51
3.5.1 处理线性不可分数据的核方法52
3.5.2 利用核技巧发现高维空间的分离超平面53
3.6 决策树学习56
3.6.1 化信息增益——获得收益56
3.6.2 构建决策树59
3.6.3 多个决策树的随机森林组合62
3.7 k-近邻——一种惰性学习算法64
3.8 本章小结66
第4章 构建良好的训练数据集——数据预处理67
4.1 处理缺失数据67
4.1.1 识别数据中的缺失值67
4.1.2 删除有缺失值的训练样本或特征68
4.1.3 填补缺失值69
4.1.4 了解scikit-learn估计器API69
4.2 处理类别数据70
4.2.1 用pandas实现类别数据的编码70
4.2.2 映射序数特征71
4.2.3 为分类标签编码71
4.2.4 为名义特征做独热编码72
4.3 把数据集划分为独立的训练数据集和测试数据集74
4.4 保持相同的特征缩放76
4.5 选择有意义的特征78
4.5.1 L1和L2正则化对模型复杂度的惩罚78
4.5.2 L2正则化的几何解释78
4.5.3 L1正则化的稀疏解决方案79
4.5.4 序列特征选择算法82
4.6 用随机森林评估特征的重要性86
4.7 本章小结88
第5章 通过降维压缩数据89
5.1 用主成分分析实现无监督降维89
5.1.1 主成分分析的主要步骤89
5.1.2 逐步提取主成分90
5.1.3 总方差和解释方差92
5.1.4 特征变换93
5.1.5 用scikit-learn实现主成分分析95
5.2 基于线性判别分析的监督数据压缩97
5.2.1 主成分分析与线性判别分析97
5.2.2 线性判别分析的内部工作原理98
5.2.3 计算散布矩阵98
5.2.4 为新特征子空间选择线性判别100
5.2.5 将样本投影到新的特征空间102
5.2.6 用scikit-learn实现LDA103
5.3 非线性映射的核主成分分析104
5.3.1 核函数与核技巧104
5.3.2 用Python实现核主成分分析107
5.3.3 投影新的数据点112
5.3.4 scikit-learn的核主成分分析115
5.4 本章小结116
第6章 模型评估和超参数调优的实践117
6.1 用流水线方法简化工作流117
6.1.1 加载威斯康星乳腺癌数据集117
6.1.2 在流水线中集成转换器和估计器118
6.2 使用k折交叉验证评估模型性能120
6.2.1 holdout方法120
6.2.2 k折交叉验证121
6.3 用学习和验证曲线调试算法123
6.3.1 用学习曲线诊断偏差和方差问题124
6.3.2 用验证曲线解决过拟合和欠拟合问题126
6.4 通过网格搜索调优机器学习模型127
6.4.1 通过网格搜索调优超参数128
6.4.2 通过嵌套式交叉验证选择算法129
6.5 了解不同的性能评估指标130
6.5.1 分析混淆矩阵130
6.5.2 优化分类模型的精度和召回率131
6.5.3 绘制ROC曲线133
6.5.4 多元分类评分指标135
6.5.5 处理类不均衡问题135
6.6 本章小结137
第7章 组合不同模型的集成学习138
7.1 集成学习138
7.2 通过多数票机制组合分类器140
7.2.1 实现一个简单的多数票分类器141
7.2.2 用多数票原则进行预测145
7.2.3 评估和优化集成分类器147
7.3 bagging——基于bootstrap样本构建集成分类器151
7.3.1 bagging简介151
7.3.2 应用bagging对葡萄酒数据集中的样本分类152
7.4 通过自适应boosting提高弱学习机的性能155
7.4.1 boosting的工作原理156
7.4.2 用scikit-learn实现AdaBoost158
7.5 本章小结161
第8章 用机器学习进行情感分析162
8.1 为文本处理预备好IMDb电影评论数据162
8.1.1 获取电影评论数据集162
8.1.2 把电影评论数据集预处理成更方便的格式163
8.2 词袋模型介绍164
8.2.1 把单词转换成特征向量164
8.2.2 通过词频-逆文档频率评估单词相关性166
8.2.3 清洗文本数据167
8.2.4 把文档处理成令牌168
8.3 训练用于文档分类的逻辑回归模型170
8.4 处理更大的数据集——在线算法和核外学习172
8.5 用潜在狄利克雷分配实现主题建模174
8.5.1 使用LDA分解文本文档175
8.5.2 scikit-learn中的LDA175
8.6 本章小结178
第9章 将机器学习模型嵌入Web应用179
9.1 序列化拟合的scikit-learn估计器179
9.2 搭建SQLite数据库存储数据181
9.3 用Flask开发Web应用183
9.3.1 个Flask Web应用183
9.3.2 表单验证与渲染185
9.4 将电影评论分类器转换为Web应用189
9.4.1 文件与文件夹——研究目录树190
9.4.2 实现主应用app.py190
9.4.3 建立评论表单192
9.4.4 创建结果页面模板193
9.5 在公共服务器上部署Web应用195
9.5.1 创建PythonAnywhere账户195
9.5.2 上传电影分类器应用195
9.5.3 更新电影分类器196
9.6 本章小结198
第10章 用回归分析预测连续目标变量199
10.1 线性回归简介199
10.1.1 简单线性回归199
10.1.2 多元线性回归200
10.2 探索住房数据集200
10.2.1 加载住房数据200
10.2.2 可视化数据集的重要特点202
10.2.3 用相关矩阵查看关系203
10.3 普通小二乘线性回归模型的实现205
10.3.1 用梯度下降方法求解回归参数205
10.3.2 通过scikit-learn估计回归模型的系数207
10.4 利用RANSAC拟合鲁棒回归模型209
10.5 评估线性回归模型的性能211
10.6 用正则化方法进行回归213
10.7 将线性回归模型转换为曲线——多项式回归214
10.7.1 用scikit-learn增加多项式项214
10.7.2 为住房数据集中的非线性关系建模216
10.8 用随机森林处理非线性关系218
10.8.1 决策树回归218
10.8.2 随机森林回归219
10.9 本章小结221
第11章 用聚类分析处理无标签数据223
11.1 用k-均值进行相似性分组223
11.1.1 用scikit-learn实现k-均值聚类223
11.1.2 k-均值 ——更聪明地设置初始集群质心的方法226
11.1.3 硬聚类与软聚类227
11.1.4 用肘部方法求解集群数228
11.1.5 通过轮廓图量化聚类质量229
11.2 把集群组织成层次树233
11.2.1 以自下而上的方式聚类233
11.2.2 在距离矩阵上进行层次聚类234
11.2.3 热度图附加树状图236
11.2.4 通过scikit-learn进行凝聚聚类238
11.3 通过DBSCAN定位高密度区域238
11.4 本章小结242
第12章 从零开始实现多层人工神经网络243
12.1 用人工神经网络建立复杂函数模型243
12.1.1 单层神经网络回顾244
12.1.2 多层神经网络体系结构简介245
12.1.3 利用正向传播激活神经网络247
12.2 识别手写数字249
12.2.1 获取并准备MNIST数据集249
12.2.2 实现一个多层感知器254
12.3 训练人工神经网络262
12.3.1 逻辑代价函数的计算262
12.3.2 理解反向传播264
12.3.3 通过反向传播训练神经网络265
12.4 关于神经网络的收敛性267
12.5 关于神经网络实现的后几句话268
12.6 本章小结268
第13章 用TensorFlow并行训练神经网络269
13.1 TensorFlow与模型训练的性能269
13.1.1 性能挑战269
13.1.2 什么是TensorFlow270
13.1.3 如何学习TensorFlow271
13.2 学习TensorFlow的步271
13.2.1 安装TensorFlow271
13.2.2 在TensorFlow中创建张量272
13.2.3 对张量形状和数据类型进行操作273
13.2.4 对张量进行数学运算273
13.2.5 拆分、堆叠和连接张量275
13.3 用TensorFlow的Dataset API构建输入流水线276
13.3.1 用现存张量创建TensorFlow的数据集276
13.3.2 把两个张量整合成一个联合数据集277
13.3.3 洗牌、批处理和重复278
13.3.4 从本地磁盘的文件创建数据集280
13.3.5 从tensorflow_datasets获取可用的数据集282
13.4 在TensorFlow中构建神经网络模型286
13.4.1 TensorFlow Keras API(tf.keras)287
13.4.2 构建线性回归模型287
13.4.3 通过.compile()和.fit()方法训练模型291
13.4.4 在鸢尾花数据集上构建多层分类感知器291
13.4.5 在测试数据集上评估训练后的模型294
13.4.6 保存并重新加载训练后的模型294
13.5 选择多层神经网络的激活函数295
13.5.1 关于逻辑函数的回顾295
13.5.2 在多元分类中调用softmax函数评估分类概率296
13.5.3 利用双曲正切拓宽输出范围297
13.5.4 修正线性单元激活函数299
13.6 本章小结300
第14章 深入探讨TensorFlow的工作原理301
14.1 TensorFlow的主要功能301
14.2 TensorFlow的计算图:迁移到TensorFlow v2302
14.2.1 了解TensorFlow的计算图302
14.2.2 在TensorFlow v1.x中创建计算图302
14.2.3 将计算图迁移到TensorFlow v2303
14.2.4 在TensorFlow v1.x中将输入数据加载到模型304
14.2.5 在TensorFlow v2中将输入数据加载到模型304
14.2.6 通过函数修饰器提高计算性能305
14.3 用于存储和更新模型参数的TensorFlow变量对象306
14.4 通过自动微分和GradientTape计算梯度309
14.4.1 针对可训练变量计算损失的梯度309
14.4.2 针对不可训练张量计算梯度310
14.4.3 保留用于多个梯度计算的资源311
14.5 通过Keras API简化通用体系结构的实现311
14.5.1 解决XOR分类问题313
14.5.2 用Keras的函数式API灵活建模317
14.5.3 基于Keras的Model类建模318
14.5.4 编写自定义Keras层318
14.6 TensorFlow估计器321
14.6.1 使用特征列322
14.6.2 带预制估计器的机器学习325
14.6.3 用估计器进行MNIST手写数字分类328
14.6.4 基于现有Keras模型创建自定义估计器329
14.7 本章小结331
第15章 用深度卷积神经网络为图像分类332
15.1 构成卷积神经网络的模块332
15.1.1 理解CNN与特征层次332
15.1.2 离散卷积计算334
15.1.3 子采样层340
15.2 构建卷积神经网络341
15.2.1 处理多个输入或者颜色通道341
15.2.2 通过dropout正则化神经网络344
15.2.3 分类过程中的损失函数346
15.3 用TensorFlow实现深度卷积神经网络347
15.3.1 多层卷积神经网络的体系结构348
15.3.2 数据加载和预处理348
15.3.3 用TensorFlow的Keras API实现卷积神经网络模型349
15.4 用卷积神经网络根据人脸图像进行性别分类353
15.4.1 加载CelebA数据集354
15.4.2 图像转换和数据扩增354
15.4.3 训练基于卷积神经网络的性别分类器359
15.5 本章小结363
第16章 用循环神经网络为序列数据建模364
16.1 序列数据介绍364
16.1.1 序列数据建模——顺序很重要364
16.1.2 序列数据的表达365
16.1.3 不同类别的序列建模365
16.2 循环神经网络序列建模366
16.2.1 了解循环神经网络的循环机制366
16.2.2 在循环神经网络中计算激活值367
16.2.3 隐藏循环与输出循环369
16.2.4 学习长程交互面临的挑战371
16.2.5 长短期记忆单元372
16.3 用TensorFlow实现循环神经网络序列建模374
16.3.1 项目1:对IMDb电影评论进行情感分析374
16.3.2 项目2:用TensorFlow实现字符级语言建模385
16.4 用转换器模型理解语言394
16.4.1 了解自注意力机制394
16.4.2 多头注意力和转换器块396
16.5 本章小结397
第17章 用生成对抗网络合成新数据398
17.1 生成对抗网络介绍398
17.1.1 自编码器398
17.1.2 用于合成新数据的生成模型400
17.1.3 用GAN生成新样本401
17.1.4 理解GAN模型中生成器和判别器网络的损失函数402
17.2 从零开始实现GAN403
17.2.1 用谷歌Colab训练GAN模型403
17.2.2 实现生成器和判别器网络405
17.2.3 定义训练数据集408
17.2.4 训练GAN模型409
17.3 用卷积和Wasserstein GAN提高合成图像的质量415
17.3.1 转置卷积416
17.3.2 批归一化417
17.3.3 实现生成器和判别器419
17.3.4 两个分布之间相异度的度量423
17.3.5 在GAN实践中使用EM距离426
17.3.6 梯度惩罚426
17.3.7 实现WGAN-GP来训练DCGAN模型427
17.3.8 模式坍塌429
17.4 其他的GAN应用431
17.5 本章小结432
第18章 用于复杂环境决策的强化学习433
18.1 概述——从经验中学习433
18.1.1 了解强化学习433
18.1.2 定义强化学习系统的智能体环境接口434
18.2 RL的理论基础435
18.2.1 马尔可夫决策过程435
18.2.2 马尔可夫决策过程的数学公式436
18.2.3 RL术语:回报、策略和价值函数438
18.2.4 用贝尔曼方程动态编程440
18.3 强化学习算法441
18.3.1 动态编程441
18.3.2 蒙特卡罗强化学习443
18.3.3 时序差分学习444
18.4 实现个RL算法446
18.4.1 介绍OpenAI Gym工具包446
18.4.2 用Q学习解决网格世界问题453
18.4.3 深度Q学习概览456
18.5 本章小结462
译者序
人工智能的研究从20世纪40年代就已经开始,在近80年的发展中经历了数次大起大落。自从2016年AlphaGo战胜的人类围棋选手之后,人工智能再一次进入人们的视野,成为当今的热门话题。各大互联网公司都投入了大量的资源来研究和开发自动驾驶、人脸识别、语音识别和机器翻译等技术。人们甚至已经开始担忧人工智能可能带来的各种影响。人工智能的发展可以说是“古树发新枝”,到底是什么原因使沉寂多年的人工智能技术焕发了青春的活力呢?
首先,移动互联网的飞速发展产生了海量的数据,使我们有机会更加深入地认识社会、探索世界、掌握规律。其次,大数据技术为我们提供了有力的技术手段,使我们可以面对瞬息万变的市场,有效地存储和处理海量数据。再次,计算技术特别是GPU的广泛应用使算力有了大幅度的提升,以前需要几天的运算如今只需要几分钟或几秒钟,这为人工智能和机器学习的普及与应用提供了计算基础。在这几项技术发展的基础之上,深度学习技术终于破茧而出,成为引领人工智能发展的重要力量。
本书英文版在美国出版后备受欢迎,究其原因,除了机器学习是所有技术人员关注的焦点以外,还在于本书系统性地梳理和分析了机器学习的各种经典算法,为重要的是,作者通过Python语言以具体代码示例深入浅出地介绍了各种算法的应用方法。如果你想了解机器学习并掌握机器学习的具体技术,那就请翻开本书,通过一个又一个案例领略机器学习的风采。所以这本书既是一本初步了解机器学习的启蒙读物,也是一本让你从初学者变成AI专家的教练示范材料。
毋庸置疑,人工智能(AI)、区块链(BlockChain)、云计算(Cloud)、大数据(Big Data)、万物互联(IoE)这五项技术(简写为ABCDE)已经成为计算机和互联网技术未来发展的五大核心动力。特别是人工智能技术,它将是继蒸汽机、电力、计算机、互联网之后的又一股重要的革命性力量。之前的几次革命解放的是我们的四肢,而人工智能解放的将是我们的头脑。
“《Python机器学习(原书第3版)》是一本非常有用的书,对于机器学习初学者和有经验的读者,通过实例、Python代码和大量关于高级问题的参考文献,全面而系统地阐释了机器学习的理论和实践。”
——Alex Martelli, Python软件基金会会士, Python Cookbook and Python in a Nutshell的合著者
“ 这本书是Python机器学习入门教程。Raschka和Mirjalili将困难的概念分解成外行人可以很容易理解的语言,同时将这些例子放在现实世界的上下文中。本书是对你机器学习库的有益补充! ”
——Kirk Borne博士, Booz Allen Hamilton首席数据科学家和执行顾问,Ten Signs of Data Science Maturity合著者
“ 《Python机器学习(原书第3版)》是一本非常实用并易于上手实践的书,从理论到实践,对机器学习领域进行了全面介绍。对于任何希望成为机器学习专家的从业者,我强烈推荐这本书。这是一本非常优秀的书!”
——Sebastian Thrun, Kitty Hawk公司CEO, Udacity的董事长和联合创始人
“过去几年,我一直在约翰·霍普金斯大学凯瑞商学院(Johns Hopkins Carey Business School)教授‘大数据机器学习人工智能’(Big Data Machine Learning AI),从那时起就开始使用Sebastian Raschka和Vahid Mirjalili撰写的这本书。我给他们的新版打了分,因为它让机器学习易于理解。这本书是向初学者讲授令人惊叹的人工智能艺术的图书,我强烈推荐!”
——Jim Kyung-Soo Liew博士, 约翰霍普金斯大学凯瑞商学院副教授
◆ 前言◆
通过新闻和社交媒体的报道,你可能已经了解到,机器学习已成为当代激动人心的技术之一。像谷歌、Facebook、苹果、亚马逊和IBM这样的大公司基于各自的考虑,已经在机器学习的研究和应用方面投入了巨资。机器学习似乎已经成为我们这个时代的流行词,但这绝不是昙花一现。这个激动人心的领域为我们开启了许多新的可能性,已经成为我们日常生活中不可或缺的一部分。智能手机的语音助手、为客户推荐合适的产品、防止信用卡欺诈、过滤垃圾邮件,以及检测和诊断疾病等都是明证,类似的应用层出不穷。
机器学习入门
如果有志从事机器学习方面的工作,想更好地解决问题或开展机器学习方面的研究,那么本书就是为你而备。然而,对新手而言,机器学习背后的理论、概念可能艰深晦涩,但近几年已经出版了许多机器学习方面的著作,这有助于大家通过研发强大的机器学习算法走上机器学习之路。
理论与实践相结合
通过实际的机器学习应用示例来接触实际代码是深入该领域的好方法。此外,具体的示例也有助于通过把所学的材料直接付诸行动来阐明宽泛的概念。然而请记住,更强大的力量意味着更重大的责任!
除了提供使用Python编程语言和基于Python的机器学习库进行机器学习的实践经验之外,本书还将介绍机器学习算法背后的数学概念,这些对成功地应用机器学习至关重要。因此,本书与一般纯粹的实践手册有所不同,书中不仅会对有关机器学习概念的必要细节进行讨论,而且还将对机器学习算法的工作原理、使用方法,以及如何避免常见的陷阱(为重要)做出直观且翔实的解释。
为什么要选择Python
在深入机器学习领域之前,请先回答一个重要的问题:“为什么要选择Python?”答案很简单:Python功能强大且易于取得。Python已经成为数据科学常用的编程语言,因为它不仅可以让我们忘记编程的冗长乏味,而且为我们提供了可以把想法落地、把概念直接付诸行动的环境。
探索机器学习领域
如果在谷歌专业网站以“机器学习”作为关键词进行搜索,可能会找到325万个出版物。当然,我们无法对过去60年来所出现的各种不同算法和应用逐一进行考证。然而,本书将开启一个激动人心的旅程,它将涵盖所有重要的主题和概念,让你在这些领域能够捷足先登。如果你发现本书所提供的知识还不足以解渴,那么没关系,你还可以利用本书所引用的其他有价值的许多资源来追踪该领域的重要突破。
我们认为,对机器学习的研究可以帮助我们成为更好的科学家、思想家和问题解决者。本书将与你分享这些知识。要获得知识就要学习,关键在于保持热情,实践出真知。
前面的路或许崎岖不平,有些主题可能颇具挑战性,但希望你能抓住这个机会,更多地思考本书所带来的回报。请记住,我们将共同踏上这段旅程,帮助你掌握许多强大的武器,让你以数据驱动的方式来解决棘手的问题。
本书的目标读者
如果你已经详细研究了机器学习方面的理论,那么本书可以教你如何把知识付诸实践。如果你以前使用过机器学习技术,想要更加深入地了解其工作原理,那么本书也是为你而写的。
如果你是机器学习领域的新手,那么不必担心,你更有理由为阅读本书而感到兴奋!我保证机器学习将会改变你解决问题的思路,并让你看到如何通过释放数据的力量来解决问题。如果你想了解如何开始用Python来回答有关数据方面的关键问题,那么请阅读本书。无论是想从零开始,还是想扩展自己已有的数据科学知识,本书都是必不可少且不可忽视的资源。
本书内容
第1章介绍用于解决不同问题的主要机器学习子领域。另外,还将讨论创建典型的机器学习模型构建流水线的基本步骤,从而形成贯穿后续各章的脉络。
第2章追溯机器学习的起源,介绍二元感知分类器和自适应线性神经元。还会简单介绍模式分类的基本原理,同时关注算法优化和机器学习的交互。
第3章描述机器学习的基本分类算法,并使用流行、全面的开源机器学习软件库之一scikit-learn提供实际示例。
第4章讨论如何解决未处理数据集中常见的问题,如数据缺失。也会讨论用来识别数据集中信息量的特征的几种方法,并教你如何处理不同类型的变量以作为机器学习算法的适当输入。
第5章描述在减少数据集中特征数量的同时保留大部分有用和具有可识别性信息的基本技术。讨论基于主成分分析的标准降维方法,并将其与监督学习和非线性变换技术进行比较。
第6章讨论在预测模型的性能评价中该做什么和不该做什么。此外,还将讨论模型评估的不同度量以及优化机器学习算法的技术。
第7章介绍有效结合多种学习算法的不同概念。讲解如何构建专家小组来克服个别学习者的弱点,从而产生更准确、更可靠的预测。
第8章讨论将文本数据转换为对机器学习算法有意义的表达方式的基本步骤,以根据文本内容预测人们的意见。
第9章继续使用第8章中的预测模型,并介绍使用嵌入式机器学习模型开发Web应用的基本步骤。
第10章讨论根据目标变量和响应变量之间的线性关系建模,从而进行连续预测的基本技术。在介绍不同的线性模型之后,还将讨论多项式回归和基于树的建模方法。
第11章将焦点转移到机器学习的其他子领域,即无监督学习。用来自三个基本聚类家族的算法来寻找一组拥有一定程度相似性的对象。
第12章扩展基于梯度的优化概念,该概念在第2章中介绍过。还将介绍如何基于常见的反向传播算法在Python中构建强大的多层神经网络。
第13章基于第12章的知识,为更有效地训练神经网络提供实用指南。该章的重点是TensorFlow 2.0,这是一个开源的Python 软件库,它允许我们充分利用现代的多核图形处理器(GPU),通过对用户友好的Keras API,采用相同的构件来构建深度神经网络。
第14章接着第13章的内容更详细地介绍TensorFlow 2.0更高级的概念和功能。TensorFlow是一个庞大且复杂的软件库,该章将逐步探讨一些概念,例如将代码编译成静态图形以加快执行速度并定义可训练的模型参数。此外,该章还会提供用TensorFlow的Keras API以及TensorFlow的预制估计器训练深度神经网络的其他实践经验。
第15章介绍卷积神经网络(CNN)。CNN代表一种特定类型的深度神经网络体系结构,特别适合用于图像数据集。由于CNN的性能优于传统方法,因此现在已被广泛用于计算机视觉中,在各种图像识别任务方面获得了非常优秀的结果。在该章中,你将学习如何将卷积层用作图像分类的强大的特征提取器。
第16章介绍深度学习的另外一种常用的神经网络体系结构,它特别适合处理文本序列数据和时间序列数据。作为热身练习, 在该章中,我们应用不同的循环神经网络来预测电影评论的情感。然后将学习神经网络如何从书中提取信息,以生成全新的文本。
第 17 章介绍一种常用的神经网络对抗训练机制,可用于生成逼真的新图像。该章首先简要地介绍自动编码器,这是一种可用于数据压缩的特定类型的神经网络体系结构。然后展示如何将自动编码器的解码器部分与第二个神经网络相结合,以区分真实图像和合成图像。通过让两个神经网络在对抗性训练中相互竞争的方法,实现用于生成新的手写数字的生成对抗网络。后,在介绍生成对抗网络的基本概念之后,介绍诸如Wasserstein距离指标等可以提高对抗性训练稳定性的方法。
第18章讨论常用于训练机器人和其他自主系统的机器学习子类别。该章首先介绍强化学习 (RL) 的基础知识,让你熟悉智能体与环境的交互、强化学习系统的奖励过程,以及从经验中学习的概念。涵盖基于模型和无模型两大类强化学习。在介绍完基本算法(如基于蒙特卡罗和基于时间距离的学习)之后,我们将动手实现并训练一个可以使用Q学习算法在网格世界环境里导航的智能体。后,该章将介绍深度Q学习算法,这是使用深度神经网络的Q学习的变体。
阅读本书需要的材料
要执行本书的示例代码,需要在macOS、Linux或者Microsoft Windows操作系统上安装Python 3.7.0或更新的版本。本书将持续使用包括SciPy、NumPy、scikit-learn、Matplotlib和pandas在内的Python的科学计算软件库。
第1章将为设置Python环境及其核心库提供指令和有用的提示。我们将逐渐添加更多的软件库,另外也会在不同的章节中分别提供相应的安装指令,例如第8章的自然语言处理NLTK库、第9章的Flask 网络框架库,以及从第13章到第18章用于在GPU上高效训练神经网络的TensorFlow。
下载示例代码及彩色图像
本书的示例代码及彩色图像可以从http://www.packtpub.com通过个人账号下载,也可以访问华章图书官网http://www.hzbook.com,通过注册并登录个人账号下载。
你也可以从GitHub网址https://github.com/rasbt/python-machine-learning-book-3rd-edition下载全部的示例代码。
本书所有代码也以Jupyter Notebook的格式提供,这可以在本书第1章的代码文件夹中找到简明的指令,其具体位置为https://github.com/rasbt/python-machine-learning-book-3rd-edition/tree/master/ch01#pythonjupyter-notebook。想要了解更多有关Jupyter Notebook用户界面的信息,请参考https://jupyter-notebook.readthedocs.io/en/stable/ 网站上的官方文档。
尽管我们推荐使用Jupyter Notebook 来执行代码,但是所有的代码示例仍然会以Python脚本(例如ch02/ch02.py)和Jupyter Notebook(例如ch02/ch02.ipynb)两种格式提供。另外,推荐阅读每章附带的README.md文件,以了解更多的信息和更新情况(例如https://github.com/rasbt/python-machine-learning-book-3rd-edition/blob/master/ch01/README.md)。
我们也把本书中用到的彩色图像截屏或者图表以PDF文件格式提供给读者。彩色图像有助于读者更好地理解输出中的变化。可以从网站https://static.packt-cdn.com/downloads/9781789955750_ColorImages.pdf下载该文件。
约定
新的术语和重要的词用粗体显示。在这样的提示后会显示警告或重要注释。
在这样的提示后会显示提示和窍门。
延伸阅读
如果你正在考虑从事机器学习工作,或者只想跟上该领域的进展,我们向你推荐机器学习领域以下领先专家的著作。
- Geoffrey Hinton(http://www.cs.toronto.edu/~hinton/)
- Andrew Ng(http://www.andrewng.org/)
- Yann LeCun(http://yann.lecun.com)
- Juergen Schmidhuber(http://people.idsia.ch/~juergen/)
- Yoshua Bengio(http://www.iro.umontreal.ca/~bengioy/yoshua_en/)
仅举几例!后,你可以从下面这些网站了解作者们所擅长的内容:
https://sebastianraschka.com
http://vahidmirjalili.com.
如果对本书有任何疑问或者需要一些有关机器学习的提示,欢迎与我们联系。
作者简介
塞巴斯蒂安·拉施卡(Sebastian Raschka)从密歇根州立大学获得博士学位,在此期间他主要关注计算生物学和机器学习交叉领域的方法研究。他在2018年夏季加入威斯康星-麦迪逊大学,担任统计学助理教授。他的主要研究活动包括开发新的深度学习体系结构来解决生物统计学领域的问题。
Sebastian在Python编程方面拥有多年经验,多年来针对数据科学、机器学习和深度学习的实际应用组织过多次研讨会,并在SciPy(重要的Python科学计算会议)上发布过机器学习教程。
本书是Sebastian的主要学术成就之一,也是Packt和 Amazon.com的畅销书之一,曾获《ACM 计算评论》2016年度奖,并被翻译成包括德文、韩文、中文、日文、俄文、波兰文和意大利文在内的多种语言。
在闲暇时间里,Sebastian热衷于为开源项目做贡献,他所实现的方法现已成功用于像Kaggle这样的机器学习竞赛。我想借此机会感谢伟大的Python社区和开源软件包的开发人员,他们为我从事科学研究和数据研究创造了完美的环境。另外,我还要感谢我的父母,他们始终鼓励和支持我在热爱的道路和事业上不断追求和努力。
特别感谢scikit-learn和TensorFlow的核心开发人员。作为这个项目的贡献者和用户,我很高兴能够与这些杰出人士合作,他们不仅在机器学习和深度学习方面非常博学,而且还是优秀的程序员。
瓦希德·米尔贾利利(Vahid Mirjalili)在密歇根州立大学获得机械工程博士学位,并在这里从事大规模分子结构计算模拟的新方法的研究。对机器学习领域的执着,促使他加入了密歇根州立大学的iPRoBe实验室,在这里他致力于把机器学习应用到计算机视觉和生物统计学领域。在经历了iPRoBe实验室硕果累累的几年和数载学术生涯之后,Vahid近以研究科学家的身份加入了3M,他在那里利用自己的经验,把的机器学习和深度学习技术应用于解决各种实际问题,以使人们生活得更加美好。
在此感谢我的太太Taban Eslami,是她在我的事业发展道路上一直给予我支持和鼓励。我也特别感谢我的导师Nikolai Priezjev、Michael Feig和Arun Ross,他们在我攻读博士学位期间对我进行了指导,另外还要感谢教授Vishnu Boddeti、Leslie Kuhn和Xiaoming Liu对我的谆谆教诲,是他们的鼓励让我锲而不舍。
审校者简介
Raghav Bali在世界上的医疗机构之一任高级数据科学家。他的工作包括研究和开发基于机器学习、深度学习和自然语言处理的企业级解决方案,用于医疗和保险相关的场景。在此之前他在英特尔工作,参与使用自然语言处理、深度学习和传统统计方法为主动性数据驱动的IT计划赋能的项目。他还曾在美国运通从事金融领域的工作,解决数字化互动和客户留存方面的问题。
Raghav还与领先的出版商合作出版过多本专著,近的一本是关于迁移学习研究方面的进展的。
Raghav拥有班加罗尔国际信息技术学院的信息技术硕士学位(金牌)。他不但喜欢阅读,而且是一个摄影迷,经常在闲暇时刻捕捉光与影。Motaz Saad从洛林大学取得计算机科学博士学位。他喜欢摆弄数据,在自然语言处理、计算语言学、数据科学和机器学习方面拥有10多年的专业经验。目前在IUG信息技术学院担任助理教授。
评论
还没有评论。