第一部分 本书的安排及软件 1
第1章 本书的内容安排及教学建议 3
1.1 适用对象 3
1.2 内容及教学建议 3
1.3 根据需要和疑问调整教学内容 5
1.3.1 拉动式学习方法 5
1.3.2 根据学生的需要教学 6
1.3.3 老师应该让学生产生质疑 6
第2章 软件准备 7
2.1 软件准备 7
2.2 R——为领悟而运行 7
2.2.1 R简介 7
2.2.2 安装和运行 8
2.2.3 试试R编程 10
2.3 Python——为领悟而运行 20
2.3.1 Python简介 20
2.3.2 安装和运行 21
2.3.3 试试Python编程 22
2.3.4 Numpy模块 26
2.3.5 Pandas模块 31
2.3.6 Matplotlib模块 32
2.4 习题 34
第二部分 数据及探索性数据分析 35
第3章 数据的形式、获得及简单描述 37
3.1 数据的意义及获取 37
3.1.1 数据 37
3.1.2 数据的获取 38
3.2 标准格式数据 39
3.2.1 变量和观测值 39
3.2.2 数据的输入和简单展示 40
3.2.3 数据阵中的元素 41
3.2.4 变量的种类 41
3.2.5 统计与计算机术语的区别 43
3.3 简单的数据汇总 44
3.3.1 一些汇总统计量 44
3.3.2 汇总统计量的计算 45
3.3.3 从“被平均”谈均值 46
3.3.4 例3.1 数据的简单汇总 47
3.4 数据的图形描述 48
3.4.1 程序包的安装和使用 48
3.4.2 散点图 49
3.4.3 直方图 53
3.4.4 盒形图 54
3.4.5 条形图 55
3.4.6 三维曲面图及等高线图 56
3.4.7 更多的图形 57
3.5 本章的Python代码 63
3.6 习题 73
第4章 数据整理和清理案例 75
4.1 GDP数据案例 75
4.1.1 形成某年各国的多指标数据 77
4.1.2 形成某国各个时期不同指标的多元时间序列 78
4.1.3 形成某指标的各个时期不同国家的多元时间序列 79
4.2 世界卫生组织案例之一 80
4.2.1 数据的提取 81
4.2.2 删除多余的行和列 82
4.2.3 把多个数据合并成一个数据 83
4.3 世界卫生组织案例之二 84
4.3.1 输入并识别数据 85
4.3.2 删除多余的行和列 85
4.3.3 合并数据 86
4.3.4 清理数据中的其他问题 88
4.4 数据中的缺失值 89
4.4.1 缺失值的审视与标记 89
4.4.2 删除缺失值的方法及问题 93
4.4.3 用认定值或某些准则来填补缺失值 95
4.4.4 利用可预测模型来填补缺失值 96
4.5 本章的Python代码 101
4.5.1 读入例4.1 数据形成2016年的各国数据 101
4.5.2 形成某国各个时期不同指标的多元时间序列 102
4.5.3 某指标的各个时期不同国家的多元时间序列 102
4.5.4 世界卫生组织案例一 103
4.5.5 每个数据集只要一年的数据来合并 104
4.5.6 世界卫生组织案例二 104
4.5.7 数据的缺失值 107
4.6 习题 113
第三部分 有监督学习 115
第5章 有监督学习概论 117
5.1 “学习”的概念 117
5.1.1 有监督学习 118
5.1.2 无监督学习 119
5.2 模型和拟合 119
5.2.1 训练决策树模型分类的例子 119
5.2.2 训练简单最小二乘线性回归模型的例子 129
5.2.3 模型的普遍意义和过拟合 132
5.2.4 警告:训练集的MSE和测试集的MSE的计算不一样! 133
5.3 模型评价 134
5.3.1 交叉验证 134
5.3.2 分类问题交叉验证的预测精度标准 135
5.3.3 回归问题交叉验证预测精度标准 135
5.3.4 Z折交叉验证时提取各折下标集的R函数 136
5.4 本章的Python代码 138
5.4.1 例5.1 数据的决策树分类 138
5.4.2 例5.2 数据的决策树分类 139
5.4.3 例5.3 的简单线性回归 140
5.4.4 Z折交叉验证时提取各折下标集的Python函数 141
5.5 习题 143
第6章 最小二乘线性回归 146
6.1 基本概念 146
6.2 一个回归实例 147
6.3 多自变量线性回归系数大小有意义吗? 149
6.4 本章的Python代码 150
第7章 Logistic回归 151
7.1 基本概念 151
7.2 Logistic回归及ROC曲线 154
7.3 本章的Python代码 157
第8章 决策树及其组合方法 159
8.1 决策树 159
8.1.1 决策树分类 159
8.1.2 决策树回归 168
8.2 有放回再抽样简介 170
8.2.1 有放回再抽样 171
8.2.2 经验分布 171
8.2.3 OOB数据 172
8.2.4 非等权放回再抽样 173
8.3 Bagging 173
8.3.1 Bagging的原理 173
8.3.2 Bagging分类 174
8.3.3 Bagging回归 175
8.4 随机森林 176
8.4.1 随机森林分类 177
8.4.2 随机森林回归 181
8.4.3 一个解释随机森林的程序包 184
8.5 AdaBoost分类 189
8.6 本章的Python代码 191
8.6.1 决策树分类 191
8.6.2 决策树回归 194
8.6.3 Bagging分类 195
8.6.4 Bagging回归 196
8.6.5 随机森林分类 196
8.6.6 随机森林回归 197
8.6.7 AdaBoost分类 197
第9章 支持向量机 199
9.1 支持向量机分类 199
9.2 支持向量机回归 201
9.3 本章的Python代码 202
9.3.1 支持向量机分类 202
9.3.2 支持向量机回归 202
第10章 人工神经网络 204
10.1 基本概念 204
10.2 神经网络分类 207
10.3 神经网络回归 209
10.4 本章的Python代码 212
10.4.1 人工神经网络分类 212
10.4.2 人工神经网络回归 212
第11章 朴素贝叶斯 214
11.1 朴素贝叶斯原理 214
11.2 朴素贝叶斯方法分类 215
11.3 本章的Python代码 216
第12章 K最近邻方法 217
12.1 K最近邻方法概要 217
12.1.1 K最近邻分类 218
12.1.2 K最近邻回归 220
12.2 本章的Python代码 221
12.2.1 K最近邻方法分类 221
12.2.2 K最近邻方法回归 221
第13章 有监督学习模型比较案例及第三部分习题 223
13.1 多分类问题例子 223
13.1.1 二分类问题 224
13.1.2 回归问题 226
13.2 本章的Python代码 228
13.3 习题 232
第四部分 无监督学习 235
第14章 降维:主成分分析 237
14.1 变量之间的关系与降维的可能性 237
14.2 两维空间的降维 238
14.3 通过特征值问题求各个主成分 242
14.4 各个观测值在新坐标中的记分 245
14.5 主成分分析在图像处理中的应用 247
14.6 本章的Python代码 249
14.7 习题 255
第15章 聚类分析 256
15.1 聚类分析概论 256
15.1.1 点间距离 257
15.1.2 类间距离 258
15.1.3 分层聚类 259
15.1.4 K均值聚类 261
15.1.5 聚类数目的选择 264
15.1.6 图像色彩的聚类 266
15.2 本章的Python代码 271
15.3 习题 274
第五部分 网络爬虫 277
第16章 网络抓取/网络爬虫入门 279
16.1 引言 279
16.1.1 目的 279
16.1.2 手段 280
16.2 HTML网页结构 280
16.2.1 简单的网页 281
16.2.2 元素(element)和标签(tag)的语法 282
16.2.3 HTML的属性 287
16.3 网络抓取的步骤 288
16.3.1 使用Python软件 288
16.3.2 使用R软件 292
16.4 网络爬虫的若干案例 294
16.4.1 抓取新京报动新闻标题 294
16.4.2 马克思恩格斯全集文章的抓取 296
16.4.3 抓取狄更斯小说《双城记》全部原文内容 297
16.4.4 抓取豆瓣《月亮与六便士》书评 299
16.4.5 抓取微博账号“公安部儿童失踪信息紧急发布平台”儿童失踪信息 302
16.5 表格数据爬取 303
16.6 习题 305
参考文献 306