目 录
第1章 聚类 1
1.1 简介 1
1.2 无监督学习与有监督学习 1
1.3 聚类的识别 3
1.3.1 识别聚类 3
1.3.2 二维数据 4
1.3.3 练习1:识别数据中的聚类 5
1.4 关于k均值聚类 8
1.4.1 无数学k均值演练 8
1.4.2 对于k均值聚类的深度演练 9
1.4.3 替代距离度量—曼哈顿距离 10
1.4.4 更深的维度 10
1.4.5 练习2:用Python计算欧几里得距离 11
1.4.6 练习3:以距离的概念形成聚类 12
1.4.7 练习4:从头开始实现k均值 13
1.4.8 练习5:通过优化实现k均值 15
1.4.9 聚类性能:轮廓分数 18
1.4.10 练习6:计算轮廓分数 19
1.4.11 活动1:实现k均值聚类 21
1.5 小结 22
第2章 分层聚类 23
2.1 介绍 23
2.2 聚类刷新 23
2.3 分层的组织结构 24
2.4 分层聚类简介 25
2.4.1 执行分层聚类的步骤 26
2.4.2 分层聚类的演练示例 27
2.4.3 练习7:建立分层结构 30
2.5 链接 33
2.5.1 链接概述 33
2.5.2 活动2:应用链接标准 34
2.6 凝聚分层聚类与分裂分层聚类 36
2.6.1 练习8:使用scikit-learn实现凝聚分层聚类 37
2.6.2 活动3:比较k均值和分层聚类 39
2.7 关于k均值与分层聚类 41
2.8 小结 42
第3章 邻域聚类方法和DBSCAN 43
3.1 介绍 43
3.1.1 聚类方法 43
3.1.2 作为邻域的聚类 44
3.2 关于DBSCAN 45
3.2.1 DBSCAN深度 46
3.2.2 DBSCAN算法的演练 47
3.2.3 练习9:评估邻域半径大小的影响 48
3.2.4 DBSCAN属性—邻域半径 51
3.2.5 活动4:从头开始实现DBSCAN 52
3.2.6 DBSCAN属性—最少点 53
3.2.7 练习10:评估最少点阈值的影响 54
3.2.8 活动5:比较DBSCAN与k均值和分层聚类 57
3.3 DBSCAN与k均值和分层聚类 58
3.4 小结 58
第4章 降维和PCA 61
4.1 介绍 61
4.1.1 降维的定义 61
4.1.2 降维的应用 62
4.1.3 维数的诅咒 64
4.2 降维技术 66
4.2.1 概述 66
4.2.2 降维和无监督学习 67
4.3 主成分分析 68
4.3.1 均值 68
4.3.2 标准偏差 68
4.3.3 协方差 68
4.3.4 协方差矩阵 69
4.3.5 练习11:理解统计的基本概念 69
4.3.6 特征值和特征向量 73
4.3.7 练习12:计算特征值和特征向量 74
4.3.8 主成分分析的过程 77
4.3.9 练习13:手动执行PCA 78
4.3.10 练习14:scikit-learn PCA 83
4.3.11 活动6:手动PCA与scikit-learn的比较 87
4.3.12 恢复压缩的数据集 89
4.3.13 练习15:可视化通过手动PCA减少方差的效果 89
4.3.14 练习16:可视化通过scitkit-learn减少方差的效果 94
4.3.15 练习17:在matplotlib中绘制三维图 98
4.3.16 活动7:使用扩展的Iris数据集执行PCA 100
4.4 小结 102
第5章 自动编码器 103
5.1 介绍 103
5.2 人工神经网络基础 105
5.2.1 神经元 106
5.2.2 sigmoid函数 106
5.2.3 线性整流函数(ReLU) 107
5.2.4 练习18:对人工神经网络的神经元建模 108
5.2.5 活动8:使用ReLU激活函数建模神经元 111
5.2.6 神经网络:架构定义 112
5.2.7 练习19:定义Keras模型 113
5.2.8 神经网络:训练 115
5.2.9 练习20:训练Keras神经网络模型 116
5.2.10 活动9:MNIST神经网络 123
5.3 自动编码器 124
5.3.1 练习21:简单的自动编码器 125
5.3.2 活动10:简单的MNIST自动编码器 129
5.3.3 练习22:多层自动编码器 130
5.3.4 卷积神经网络 134
5.3.5 练习23:卷积自动编码器 134
5.3.6 活动11:MNIST卷积自动编码器 139
5.4 小结 141
第6章 t分布随机邻域嵌入算法 143
6.1 介绍 143
6.2 随机邻域嵌入 144
6.3 关于t分布式SNE 146
6.3.1 练习24:在MNIST数据集上实现t-SNE 146
6.3.2 活动12:在葡萄酒数据集上实现t-SNE 155
6.4 解释t-SNE图 157
6.4.1 困惑度 157
6.4.2 练习25:MNIST数据集的t-SNE和困惑度 157
6.4.3 活动13:葡萄酒数据集的t-SNE和困惑度 161
6.4.4 迭代 162
6.4.5 练习26:MNIST数据集的t-SNE和迭代 162
6.4.6 活动14:葡萄酒数据集的t-SNE和迭代 165
6.4.7 关于可视化的最终思考 166
6.5 小结 167
第7章 主题建模 169
7.1 介绍 169
7.1.1 主题模型概述 170
7.1.2 练习27:设置环境 170
7.1.3 主题模型的高级概述 172
7.1.4 商业应用 175
7.1.5 练习28:数据加载 176
7.2 清理文本数据 179
7.2.1 数据清理技术 180
7.2.2 练习29:逐步清理数据 180
7.2.3 练习30:完整的数据清理操作 184
7.2.4 活动15:加载和清理Twitter数据 187
7.3 潜在狄利克雷分配 188
7.3.1 变分推断 190
7.3.2 词袋 191
7.3.3 练习31:使用CountVectorizer创建词袋模型 192
7.3.4 困惑度 193
7.3.5 练习32:选择主题数 193
7.3.6 练习33:运行潜在狄利克雷分配 195
7.3.7 练习34:可视化LDA 199
7.3.8 练习35:尝试4个主题 203
7.3.9 活动16:潜在狄利克雷分配和与健康相关的Twitter贴文 206
7.3.10 其他词袋模型 208
7.3.11 练习36:使用TF-IDF创建词袋 208
7.4 非负矩阵分解 209
7.4.1 关于Frobenius范数 210
7.4.2 乘法更新 211
7.4.3 练习37:非负矩阵分解 212
7.4.4 练习38:可视化NMF 214
7.4.5 活动17:非负矩阵分解 216
7.5 小结 217
第8章 购物篮分析 219
8.1 介绍 219
8.2 关于购物篮分析 219
8.2.1 用例 222
8.2.2 重要概率度量标准 223
8.2.3 练习39:创建示例交易数据 223
8.2.4 支持度 225
8.2.5 置信度 225
8.2.6 提升度和杠杆率 226
8.2.7 确信度 226
8.2.8 练习40:计算度量标准 227
8.3 交易数据的特征 229
8.3.1 练习41:加载数据 230
8.3.2 数据清理和格式化 232
8.3.3 练习42:数据清理和格式化 233
8.3.4 数据编码 237
8.3.5 练习43:数据编码 238
8.3.6 活动18:加载和准备完整的在线零售数据 240
8.4 关于Apriori算法 241
8.4.1 计算修正 244
8.4.2 练习44:执行Apriori算法 244
8.4.3 活动19:对完整在线零售数据集运行Apriori算法 249
8.5 关联规则 251
8.5.1 练习45:推导关联规则 252
8.5.2 活动20:在完整的在线零售数据集上查找关联规则 257
8.6 小结 258
第9章 热点分析 259
9.1 介绍 259
9.1.1 空间统计 260
9.1.2 概率密度函数 260
9.1.3 在业务中使用热点分析 262
9.2 核密度估计 262
9.2.1 带宽值 263
9.2.2 练习46:带宽值的影响 263
9.2.3 选择最佳带宽 266
9.2.4 练习47:使用网格搜索选择最佳带宽 267
9.2.5 核函数 269
9.2.6 练习48:核函数的影响 271
9.2.7 核密度估计推导 272
9.2.8 练习49:模拟核密度估计的推导 273
9.2.9 活动21:估算一维密度 275
9.3 关于热点分析 277
9.3.1 练习50:使用seaborn加载数据和建模 277
9.3.2 练习51:使用基础地图 283
9.3.3 活动22:分析伦敦的犯罪数据 289
9.4 小结 291
附录 293
第1章 聚类 293
活动1:实现k均值聚类 293
第2章 分层聚类 296
活动2:应用链接标准 296
活动3:比较k均值和分层聚类 299
第3章 邻域聚类方法和DBSCAN 302
活动4:从头开始实现DBSCAN 302
活动5:比较DBSCAN与k均值和分层聚类 306
第4章 降维和PCA 310
活动6:手动PCA与scikit-learn的比较 310
活动7:使用扩展的Iris数据集执行PCA 314
第5章 自动编码器 319
活动8:使用ReLU激活函数建模神经元 319
活动9:MNIST神经网络 322
活动10:简单的MNIST自动编码器 325
活动11:MNIST卷积自动编码器 327
第6章 t分布随机邻域嵌入算法 331
活动12:在葡萄酒数据集上实现t-SNE 331
活动13:葡萄酒数据集的t-SNE和困惑度 335
活动14:葡萄酒数据集的t-SNE和迭代 339
第7章 主题建模 342
活动15:加载和清理Twitter数据 342
活动16:潜在狄利克雷分配和与健康相关的Twitter贴文 346
活动17:非负矩阵分解 351
第8章 购物篮分析 352
活动18:加载和准备完整的在线零售数据 352
活动19:对完整在线零售数据集运行Apriori算法 354
活动20:在完整的在线零售数据集上查找关联规则 357
第9章 热点分析 360
活动21:估算一维密度 360
活动22:分析伦敦的犯罪数据 362