猜你喜欢
Python机器学习手册:从数据预处理到深度学习

Python机器学习手册:从数据预处理到深度学习

书籍作者:ChrisAlbon ISBN:9787121369629
书籍语言:简体中文 连载状态:全集
电子书格式:pdf,txt,epub,mobi,azw3 下载次数:3075
创建日期:2021-02-14 发布日期:2021-02-14
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板
内容简介

《Python机器学习手册:从数据预处理到深度学习》采用基于任务的方式来介绍如何在机器学习中使用Python。书中有近200个独立的解决 方案,针对的都是数据科学家或机器学习工程师在构建模型时可能遇到的常见任务,涵盖从简 单的矩阵和向量运算到特征工程以及神经网络的构建。所有方案都提供了相关代码,读者可以 复制并粘贴这些代码,用在自己的程序中。

《Python机器学习手册:从数据预处理到深度学习》不是机器学习的入门书,适合熟悉机器学习理论和概念的读者阅读。你可以将本书作 为案头参考书,在机器学习的日常开发中遇到问题时,随时借鉴书中代码,快速解决问题。


作者简介

Chris Albon是一位有十年经验的数据科学家和政治学家,他将统计学习、人工智能和软件工程应用到政治和社会活动以及人道主义活动中,譬如监查选举情况、灾难救助等。目前,Chris是肯尼亚创业公司BRCK的首席数据科学家。这家公司致力于为前沿市场的互联网用户构建一个稳健的网络。
韩慧昌,毕业于北京科技大学,ThoughtWorks高级咨询师,有多个大型企业AI项目经验。林然,有6年多的开发经验、4年多Python开发经验,在航空、零售、物流、汽车、通讯等多个行业应用过机器学习算法。徐江,毕业于瑞典皇家理工学院的系统生物学专业,曾就职于Thoughtworks软件技术有限公司。

编辑推荐
适读人群 :从事数据科学、深度学习、机器学习的人员。

采用基于任务的方式介绍机器学习

涵盖在构建机器学习模型时可能遇到的常见任务

提供近200个小任务的解决方案,以及代码

在代码中加深对理论的理解

前言

在过去的几年中,机器学习已经渗透到企业、非营利组织和政府的日常运作中。随着机 器学习热度的增加,在对机器学习从业者的指导方面,涌现出一批高质量的文献。这些 文献培养了整整一代的数据科学家和机器学习工程师。这些文献提供了学习资源,为人 们讲解机器学习是什么及其工作原理。尽管这种方法富有成效,但却遗漏了一部分内容:

机器学习日常开发中的细节。这就是笔者写本书的动机——本书不是写给学生读者学习 机器学习理论的大部头,而是写给专业人士的“扳手型”工具书。我希望你把它放在书 桌上,把你感兴趣的某些页折起来,在日常开发中需要解决实际问题时就拿过来翻一翻。

更具体地说,本书采用基于任务的方式来介绍机器学习,有近 200 个独立的解决方案(你可以复制并粘贴这些代码,它们都是可以正常运行的),针对的都是数据科学家或机器 学习工程师在构建模型时可能遇到的常见任务。

本书的最终目标是成为人们在构建真实的机器学习系统时的参考书。例如,假设你有一 个 JSON 文件,其中包含 1000 个数据分类特征和数值型特征,并且目标向量的分类不均衡,你想得到一个可解释的模型,那么使用本书提供的解决方案可以帮助你解决如下问题 :

加载 JSON 文件(2.5 节)

对特征进行标准化(4.2 节)

对特征字典编码(5.3 节)

填充缺失的分类值(5.4 节)

使用主成分进行特征降维(9.1 节)

使用随机搜索选择最佳模型(12.2 节)

训练随机森林分类器(14.4 节)

选择随机森林中的重要特征(14.7 节)


本书的目标是让你 :

1.复制 / 粘贴代码,并确信它们能很好地运行在玩具数据集(toy dataset)上。

2.阅读每一节后面的“讨论”以增进对代码背后理论的理解,并了解哪些参数需

要重点考虑。

3.对书中的代码进行各种组合与修改,以构建实际的应用。


哪些人适合阅读本书

本书不是机器学习的入门书。如果你对机器学习的基本概念还不太了解,或者从未花时 间学习过机器学习,请不要购买本书。本书适合机器学习的实践者阅读,他们熟悉机器 学习的理论和概念,可以参考书中的代码快速解决在日常开发中遇到的问题。

另外,本书假定读者熟悉 Python 编程语言和包管理。


哪些人不适合阅读本书

如前所述,本书不是机器学习的入门书,因此它不应该是你的第一本机器学习书。如果 你还不熟悉交叉验证、随机森林和梯度下降等概念,那么建议你先阅读一本入门类机器 学习图书,再阅读本书来学习机器学习的实用解决方案。


书中用到的术语

机器学习会用到很多领域的技术,包括计算机科学、统计学和数学,因此在关于机器学 习的讨论中会使用各种各样的术语 :

观察值(observation)

我们观察到的单个单位——例如,一个人、一次销售或一条记录。


学习算法(learning algorithm)

用来学习模型的最佳参数的算法——例如,线性回归、朴素贝叶斯或决策树。


模型(model)

学习算法的输出。学习算法训练出的模型可以用来做预测。


参数(parameter)

一个模型在训练过程中学习到的权重或系数。


超参数(hyperparameter)

一个学习算法在训练前需要设置的一组参数。


性能(performance)

用来评估模型的指标。


损失(loss)

一个需要在训练中最小化或最大化的指标。


训练(train)

使用类似梯度下降之类的数学方法将一个学习算法应用到数据上。


拟合(fit)

使用分析方法将一个机器学习算法应用到数据上。


数据(data)

一组观察值。


致谢

没有一些朋友和陌生人的帮助,这本书是不可能完成的。很难列出提供过帮助的所有人 的名字,但我想至少提一下这些人 :Angela Bassa、Teresa Borcuch、Justin Bozonier、 Andre deBruin、Numa Dhamani、Dan Friedman、Joel Grus、Sarah Guido、Bill Kam-bouroglou、Mat Kelcey、Lizzie Kumar、Hilary Parker、Niti Paudyal、Sebastian Raschka 和 Shreya Shankar。

我欠他们所有人一瓶啤酒,或者五瓶。

目录

第1 章 向量、矩阵和数组 1

1.0 简介 1

1.1 创建一个向量 1

1.2 创建一个矩阵 2

1.3 创建一个稀疏矩阵 3

1.4 选择元素 5

1.5 展示一个矩阵的属性 6

1.6 对多个元素同时应用某个操作 7

1.7 找到最大值和最小值 8

1.8 计算平均值、方差和标准差 9

1.9 矩阵变形 10

1.10 转置向量或矩阵 11

1.11 展开一个矩阵 12

1.12 计算矩阵的秩 13

1.13 计算行列式 14

1.14 获取矩阵的对角线元素 14

1.15 计算矩阵的迹 15

1.16 计算特征值和特征向量 16

1.17 计算点积 17

1.18 矩阵的相加或相减 18

1.19 矩阵的乘法 19

1.20 计算矩阵的逆 20

1.21 生成随机数 21


第2 章 加载数据 23

2.0 简介 23

2.1 加载样本数据集 23

2.2 创建仿真数据集 25

2.3 加载CSV 文件 28

2.4 加载Excel 文件 29

2.5 加载JSON 文件 29

2.6 查询SQL 数据库 31


第3 章 数据整理 33

3.0 简介 33

3.1 创建一个数据帧 34

3.2 描述数据 35

3.3 浏览数据帧 37

3.4 根据条件语句来选择行 39

3.5 替换值 40

3.6 重命名列 41

3.7 计算最小值、最大值、总和、平均值与计数值 43

3.8 查找唯一值 44

3.9 处理缺失值 45

3.10 删除一列 47

3.11 删除一行 48

3.12 删除重复行 49

3.13 根据值对行分组 51

3.14 按时间段对行分组 52

3.15 遍历一个列的数据 54

3.16 对一列的所有元素应用某个函数 55

3.17 对所有分组应用一个函数 56

3.18 连接多个数据帧 57

3.19 合并两个数据帧 59


第4 章 处理数值型数据 63

4.0 简介 63

4.1 特征的缩放 63

4.2 特征的标准化 65

4.3 归一化观察值 66

4.4 生成多项式和交互特征 69

4.5 转换特征 70

4.6 识别异常值 71

4.7 处理异常值 73

4.8 将特征离散化 75

4.9 使用聚类的方式将观察值分组 77

4.10 删除带有缺失值的观察值 79

4.11 填充缺失值 81


第5 章 处理分类数据 83

5.0 简介 83

5.1 对nominal 型分类特征编码 84

5.2 对ordinal 分类特征编码 86

5.3 对特征字典编码 88

5.4 填充缺失的分类值 91

5.5 处理不均衡分类 93


第6 章 处理文本 97

6.0 简介 97

6.1 清洗文本 97

6.2 解析并清洗HTML 99

6.3 移除标点 100

6.4 文本分词 101

6.5 删除停止词(stop word) 102

6.6 提取词干 103

6.7 标注词性 104

6.8 将文本编码成词袋(Bag of Words) 107

6.9 按单词的重要性加权 109


第7 章 处理日期和时间 113

7.0 简介 113

7.1 把字符串转换成日期 113

7.2 处理时区 115

7.3 选择日期和时间 116

7.4 将日期数据切分成多个特征 117

7.5 计算两个日期之间的时间差 118

7.6 对一周内的各天进行编码 119

7.7 创建一个滞后的特征 120

7.8 使用滚动时间窗口 121

7.9 处理时间序列中的缺失值 123


第8 章 图像处理 127

8.0 简介 127

8.1 加载图像 128

8.2 保存图像 130

8.3 调整图像大小 131

8.4 裁剪图像 132

8.5 平滑处理图像 133

8.6 图像锐化 136

8.7 提升对比度 138

8.8 颜色分离 140

8.9 图像二值化 142

8.10 移除背景 144

8.11 边缘检测 148

8.12 角点检测 150

8.13 为机器学习创建特征 153

8.14 将颜色平均值编码成特征 156

8.15 将色彩直方图编码成特征 157


第9 章 利用特征提取进行特征降维 161

9.0 简介 161

9.1 使用主成分进行特征降维 161

9.2 对线性不可分数据进行特征降维 164

9.3 通过最大化类间可分性进行特征降维 166

9.4 使用矩阵分解法进行特征降维 169

9.5 对稀疏数据进行特征降维 170


第10 章 使用特征选择进行降维 173

10.0 简介 173

10.1 数值型特征方差的阈值化 173

10.2 二值特征的方差阈值化 175

10.3 处理高度相关性的特征 176

10.4 删除与分类任务不相关的特征 178

10.5 递归式特征消除 180


第11 章 模型评估 183

11.0 简介 183

11.1 交叉验证模型 183

11.2 创建一个基准回归模型 . 187

11.3 创建一个基准分类模型 188

11.4 评估二元分类器 190

11.5 评估二元分类器的阈值 193

11.6 评估多元分类器 197

11.7 分类器性能的可视化 198

11.8 评估回归模型 201

11.9 评估聚类模型 203

11.10 创建自定义评估指标 204

11.11 可视化训练集规模的影响 206

11.12 生成对评估指标的报告 208

11.13 可视化超参数值的效果 209


第12 章 模型选择 213

12.0 简介 213

12.1 使用穷举搜索选择最佳模型 213

12.2 使用随机搜索选择最佳模型 216

12.3 从多种学习算法中选择最佳模型 218

12.4 将数据预处理加入模型选择过程 . 220

12.5 用并行化加速模型选择 221

12.6 使用针对特定算法的方法加速模型选择 223

12.7 模型选择后的性能评估 224


第13 章 线性回归 227

13.0 简介 227

13.1 拟合一条直线 227

13.2 处理特征之间的影响 229

13.3 拟合非线性关系 231

13.4 通过正则化减少方差 233

13.5 使用套索回归减少特征 235


第14 章 树和森林 237

14.0 简介 237

14.1 训练决策树分类器 237

14.2 训练决策树回归模型 239

14.3 可视化决策树模型 240

14.4 训练随机森林分类器 243

14.5 训练随机森林回归模型 244

14.6 识别随机森林中的重要特征 245

14.7 选择随机森林中的重要特征 248

14.8 处理不均衡的分类 249

14.9 控制决策树的规模 250

14.10 通过boosting 提高性能 252

14.11 使用袋外误差(Out-of-Bag Error)评估随机森林模型 253


第15 章 KNN 255

15.0 简介 255

15.1 找到一个观察值的最近邻 255

15.2 创建一个KNN 分类器 258

15.3 确定最佳的邻域点集的大小 260

15.4 创建一个基于半径的最近邻分类器 261


第16 章 逻辑回归 263

16.0 简介 263

16.1 训练二元分类器 263

16.2 训练多元分类器 265

16.3 通过正则化来减小方差 266

16.4 在超大数据集上训练分类器 267

16.5 处理不均衡的分类 269


第17 章 支持向量机 271

17.0 简介 271

17.1 训练一个线性分类器 271

17.2 使用核函数处理线性不可分的数据 274

17.3 计算预测分类的概率 278

17.4 识别支持向量 279

17.5 处理不均衡的分类 281


第18 章 朴素贝叶斯 283

18.0 简介 283

18.1 为连续的数据训练分类器 284

18.2 为离散数据和计数数据训练分类器 286

18.3 为具有二元特征的数据训练朴素贝叶斯分类器 287

18.4 校准预测概率 288


第19 章 聚类 291

19.0 简介 291

19.1 使用K-Means 聚类算法 291

19.2 加速K-Means 聚类 294

19.3 使用Meanshift 聚类算法 295

19.4 使用DBSCAN 聚类算法 296

19.5 使用层次合并聚类算法 298


第20 章 神经网络 301

20.0 简介 301

20.1 为神经网络预处理数据 302

20.2 设计一个神经网络 304

20.3 训练一个二元分类器 307

20.4 训练一个多元分类器 309

20.5 训练一个回归模型 311

20.6 做预测 313

20.7 可视化训练历史 315

20.8 通过权重调节减少过拟合 318

20.9 通过提前结束减少过拟合 320

20.10 通过Dropout 减少过拟合 322

20.11 保存模型训练过程 324

20.12 使用k 折交叉验证评估神经网络 326

20.13 调校神经网络 328

20.14 可视化神经网络 331

20.15 图像分类 333

20.16 通过图像增强来改善卷积神经网络的性能 . 337

20.17 文本分类 339


第21 章 保存和加载训练后的模型 343

21.0 简介 343

21.1 保存和加载scikit-learn 模型 343

21.2 保存和加载Keras 模型 345