第1章 赋予计算机从数据中学习的能力 1
1.1 构建把数据转换为知识的智能机器 1
1.2 三种不同类型的机器学习 1
1.2.1 用有监督学习预测未来 2
1.2.2 用强化学习解决交互问题 3
1.2.3 用无监督学习发现隐藏结构 4
1.3 基本术语与符号 4
1.4 构建机器学习系统的路线图 6
1.4.1 预处理——整理数据 6
1.4.2 训练和选择预测模型 7
1.4.3 评估模型和预测新样本数据 7
1.5 用Python进行机器学习 7
1.5.1 从Python包索引安装Python和其他包 8
1.5.2 采用Anaconda Python和软件包管理器 8
1.5.3 科学计算、数据科学和机器学习软件包 8
1.6 小结 9
第2章 训练简单的机器学习分类算法 10
2.1 人工神经元——机器学习早期历史一瞥 10
2.1.1 人工神经元的正式定义 11
2.1.2 感知器学习规则 12
2.2 在Python中实现感知器学习算法 14
2.2.1 面向对象的感知器API 14
2.2.2 在鸢尾花数据集上训练感知器模型 16
2.3 自适应神经元和学习收敛 20
2.3.1 梯度下降为最小代价函数 21
2.3.2 用Python实现Adaline 22
2.3.3 通过调整特征大小改善梯度下降 25
2.3.4 大规模机器学习与随机梯度下降 27
2.4 小结 30
第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-leam训练逻辑回归模型 44
3.3.5通过正则化解决过拟合问题 45
3.4支持向量机的最大余量分类 47
3.4.1最大边际的直觉 48
3.4.2用松弛变量处理非线性可分 48
3.4.3其他的scikit-leam实现 50
3.5用核支持向量机求解非线性问题 50
3.5.1处理线性不可分数据的核方法 50
3.5.2利用核技巧,发现高维空间的分离超平面 52
3.6决策树学习 55
3.6.1最大限度地获取信息——获得最大收益 55
3.6.2构建决策树 58
3.6.3通过随机森林组合多个决策树 61
3.7 K-近邻——一种懒惰的学习算法 63
3.8小结 65
第4章 构建良好的训练集——预处理 66
4.1处理缺失数据 66
4.1.1识别数据中的缺失数值 66
4.1.2删除缺失的数据 67
4.1.3填补缺失的数据 68
4.1.4了解scikit-learn评估器API 68
4.2处理分类数据 69
4.2.1名词特征和序数特征 69
4.2.2映射序数特征 70
4.2.3分类标签编码 70
4.2.4为名词特征做热编码 71
4.3分裂数据集为独立的训练集和测试集 73
4.4把特征保持在同一尺度上 75
4.5选择有意义的特征 76
4.5.1 L1和L2正则化对模型复杂度的惩罚 76
4.5.2 L2正则化的几何解释 77
4.5.3 L1正则化的稀疏解决方案 78
4.5.4为序数特征选择算法 80
4.6用随机森林评估特征的重要性 84
4.7小结 87
第5章 通过降维压缩数据 88
5.1用主成分分析实现无监督降维 88
5.1.1主成分分析的主要步骤 88
5.1.2逐步提取主成分 89
5.1.3总方差和解释方差 91
5.1.4特征变换 92
5.1.5 scikit-learn的主成分分析 93
5.2基于线性判别分析的有监督数据压缩 96
5.2.1主成分分析与线性判别分析 96
5.2.2线性判别分析的内部逻辑 97
5.2.3计算散布矩阵 97
5.2.4在新的特征子空间选择线性判别式 99
5.2.5将样本投影到新的特征空间 101
5.2.6用scikit-learn实现的LDA 101
5.3非线性映射的核主成分分析 102
5.3.1核函数与核技巧 103
5.3.2用Python实现核主成分分析 106
5.3.3投影新的数据点 111
5.3.4 scikit-learn的核主成分分析 113
5.4小结 114
第6章 模型评估和超参数调优的最佳实践 115
6.1用管道方法简化工作流 115
6.1.1加载威斯康星乳腺癌数据集 115
6.1.2集成管道中的转换器和评估器 116
6.2使用k折交叉验证评估模型的性能 118
6.2.1抵抗方法 118
6.2.2 k折交叉验证 119
6.3用学习和验证曲线调试算法 122
6.3.1用学习曲线诊断偏差和方差问题 122
6.3.2用验证曲线解决过拟合和欠拟合问题 124
6.4通过网格搜索为机器学习模型调优 126
6.4.1通过网格搜索为超参数调优 126
6.4.2以嵌套式交叉验证来选择算法 127
6.5比较不同的性能评估指标 128
6.5.1含混矩阵分析 128
6.5.2优化分类模型的准确度和召回率 129
6.5.3绘制受试者操作特性图 130
6.5.4多元分类评分指标 133
6.6处理类的不平衡问题 133
6.7小结 135
第7章 综合不同模型的组合学习 136
7.1集成学习 136
7.2采用多数票机制的集成分类器 139
7.2.1实现基于多数票的简单分类器 139
7.2.2用多数票原则进行预测 143
7.2.3评估和优化集成分类器 145
7.3套袋——基于导引样本构建分类器集成 149
7.3.1套袋简介 150
7.3.2应用套袋技术对葡萄酒数据集中的样本分类 151
7.4通过自适应增强来利用弱学习者 153
7.4.1增强是如何实现的 154
7.4.2用scikit-learn实现AdaBoost 156
7.5小结 158
第8章 应用机器学习于情感分析 159
8.1为文本处理预备好IMDb电影评论数据 159
8.1.1获取电影评论数据集 159
8.1.2把电影评论数据预处理成更方便格式的数据 160
8.2词袋模型介绍 161
8.2.1把词转换成特征向量 161
8.2.2通过词频逆反文档频率评估单词相关性 162
8.2.3清洗文本数据 164
8.2.4把文档处理为令牌 165
8.3训练文档分类的逻辑回归模型 166
8.4处理更大的数据集——在线算法和核心学习 168
8.5具有潜在狄氏分配的主题建模 171
8.5.1使用LDA分解文本文档 171
8.5.2 LDA与seikit-learn 172
8.6小结 174
第9章 将机器学习模型嵌入网络应用 175
9.1序列化拟合scikit-learn评估器 175
9.2搭建SQLite数据库存储数据 177
9.3用Flask开发网络应用 179
9.3.1第一个Flask网络应用 179
9.3.2表单验证与渲染 181
9.4将电影评论分类器转换为网络应用 184
9.4.1文件与文件夹——研究目录树 185
9.4.2实现主应用app.py 186
9.4.3建立评论表单 188
9.4.4创建一个结果页面的模板 189
9.5在面向公众的服务器上部署网络应用 190
9.5.1创建PythonAnywhere账户 190
9.5.2上传电影分类应用 191
9.5.3更新电影分类器 191
9.6小结 193
第10章 用回归分析预测连续目标变量 194
10.1线性回归简介 194
10.1.1简单线性回归 194
10.1.2多元线性回归 195
10.2探索住房数据集 196
10.2.1加载住房数据 196
10.2.2可视化数据集的重要特点 197
10.2.3用关联矩阵查看关系 198
10.3普通最小二乘线性回归模型的实现 200
10.3.1用梯度下降方法求解回归参数 200
10.3.2通过scikit-learn估计回归模型的系数 203
10.4利用RANSAC拟合稳健的回归模型 205
10.5评估线性回归模型的性能 206
10.6用正则化方法进行回归 209
10.7将线性回归模型转换为曲线——多项式回归 210
10.7.1用scikit-leam增加多项式的项 210
10.7.2为住房数据集中的非线性关系建模 211
10.8用随机森林处理非线性关系 214
10.8.1决策树回归 214
10.8.2随机森林回归 215
10.9小结 217
第11章 用聚类分析处理无标签数据 218
11.1用k-均值进行相似性分组 218
11.1.1 seikit-learn的k-均值聚类 218
11.1.2 k-均值++——更聪明地设置初始聚类中心的方法 221
11.1.3硬聚类与软聚类 222
11.1.4用肘法求解最佳聚类数 223
11.1.5通过轮廓图量化聚类质量 224
11.2把集群组织成有层次的树 228
11.2.1以自下而上的方式聚类 228
11.2.2在距离矩阵上进行层次聚类 229
11.2.3热度图附加树状图 232
11.2.4 scikit-leam凝聚聚类方法 233
11.3通过DBSCAN定位高密度区域 233
11.4小结 237
第12章 从零开始实现多层人工神经网络 238
12.1用人工神经网络为复杂函数建模 238
12.1.1单层神经网络扼要重述 239
12.1.2介绍多层神经网络体系 240
12.1.3利用正向传播激活神经网络 242
12.2识别手写数字 243
12.2.1获取MNIST数据集 243
12.2.2实现一个多层感知器 247
12.3训练人工神经网络 256
12.3.1逻辑成本函数的计算 256
12.3.2开发反向传播的直觉 257
12.3.3通过反向传播训练神经网络 258
12.4关于神经网络的收敛性 260
12.5关于神经网络实现的最后几句话 261
12.6小结 261
第13章 用TensorFlow并行训练神经网络 262
13.1 TensorFlow与模型训练的性能 262
13.1.1什么是TensorFlow 263
13.1.2如何学习TensorFlow 264
13.1.3学习TensorFlow的第一步 264
13.1.4使用阵列结构 266
13.1.5用TensorFlow的底层API开发简单的模型 267
13.2用TensorFlow的高级API高效率地训练神经网络 270
13.2.1用TensorFlow的Layers API构建多层神经网络 270
13.2.2用Keras研发多层神经网络 274
13.3多层网络激活函数的选择 277
13.3.1逻辑函数回顾 278
13.3.2在多元分类中调用softmax函数评估类别概率 279
13.3.3利用双曲正切拓宽输出范围 280
13.3.4修正线性单元激活函数 281
13.4小结 282
第14章 深入探讨TensorFlow的工作原理 283
14.1 TensorFlow的主要功能 283
14.2 TensorFlow的排序与张量 284
14.3了解TensorFlow的计算图 285
14.4 TensorFlow中的占位符 287
14.4.1定义占位符 287
14.4.2为占位符提供数据 287
14.4.3用batchsizes为数据阵列定义占位符 288
14.5 TensorFlow中的变量 289
14.5.1定义变量 289
14.5.2初始化变量 290
14.5.3变量范围 291
14.5.4变量复用 292
14.6建立回归模型 295
14.7在TensorFlow计算图中用张量名执行对象 297
14.8在TensorFlow中存储和恢复模型 298
14.9把张量转换成多维数据阵列 300
14.10利用控制流构图 303
14.11用TensorBoard可视化图 305
14.12小结 308
第15章 深度卷积神经网络图像识别 309
15.1构建卷积神经网络的模块 309
15.1.1理解CNN与学习特征的层次 309
15.1.2执行离散卷积 310
15.1.3子采样 316
15.2拼装构建CNN 317
15.2.1处理多个输入或者彩色频道 317
15.2.2通过淘汰正则化神经网络 319
15.3用TensorFlow实现深度卷积神经网络 321
15.3.1多层CNN体系结构 321
15.3.2加载和预处理数据 322
15.3.3用TensorFlow的低级API实现CNN模型 323
15.3.4用TensorFlow的Layers API实现CNN 332
15.4小结 336
第16章 用递归神经网络为序列数据建模 338
16.1序列数据 338
16.1.1序列数据建模——顺序很重要 338
16.1.2表示序列 339
16.1.3不同类别的序列建模 339
16.2用于序列建模的RNN 340
16.2.1理解RNN的结构和数据流 340
16.2.2在RNN中计算激活值 341
16.2.3长期交互学习的挑战 343
16.2.4 LSTM单元 343
16.3用TensorFlow实现多层RNN序列建模 345
16.4项目一:利用多层RNN对IMDb电影评论进行情感分析 345
16.4.1准备数据 345
16.4.2嵌入式 348
16.4.3构建一个RNN模型 350
16.4.4情感RNN类构造器 350
16.4.5 build方法 351
16.4.6 train方法 353
16.4.7 predict方法 354
16.4.8创建SentimentRNN类的实例 355
16.4.9训练与优化情感分析RNN模型 355
16.5项目二:用TensorFlow实现字符级RNN语言建模 356
16.5.1准备数据 356
16.5.2构建字符级RNN语言模型 359
16.5.3构造器 359
16.5.4 build方法 360
16.5.5 train方法 362
16.5.6 sample方法 362
16.5.7创建和训练CharRNN模型 364
16.5.8处于取样状态的CharRNN模型 364
16.6总结 365