如今,机器学习正在互联网上下掀起热潮,而Python则是非常适合开发机器学习系统的一门优秀语言。作为动态语言,它支持快速探索和实验,并且针对Python的机器学习算法库的数量也与日俱增。本书最大的特色,就是结合实例分析教会读者如何通过机器学习解决实际问题。
本书将向读者展示如何从原始数据中发现模式,首先从Python与机器学习的关系讲起,再介绍一些库,然后就开始基于数据集进行比较正式的项目开发了,涉及建模、推荐及改进,以及声音与图像处理。通过流行的开源库,我们可以掌握如何高效处理文本、图片和声音。同时,读者也能掌握如何评估、比较和选择适用的机器学习技术。
举几个例子,我们会介绍怎么把StackOverflow的回答按质量高低进行分类,怎么知道某个音乐文件是爵士风格,还是重金属摇滚风格。另外,本书还涵盖了主题建模、购物习性分析及云计算等高级内容。总之,通过学习本书,读者可以掌握构建自己所需系统的各方面知识,并且学以致用,解决自己面临的现实问题。
读者只要具有一定的Python编程经验,能够自己安装和使用开源库,就足够了,即使对机器学习一点了解都没有也没关系。本书不会讲机器学习算法背后的数学。
目录
第1章 Python机器学习入门 1
1.1 梦之队:机器学习与Python 1
1.2 这本书将教给你什么(以及不会教什么) 2
1.3 遇到困难的时候怎么办 3
1.4 开始 4
1.4.1 NumPy、SciPy和Matplotlib简介 4
1.4.2 安装Python 5
1.4.3 使用NumPy和SciPy智能高效地处理数据 5
1.4.4 学习NumPy 5
1.4.5 学习SciPy 9
1.5 我们第一个(极小的)机器学习应用 10
1.5.1 读取数据 10
1.5.2 预处理和清洗数据 11
1.5.3 选择正确的模型和学习算法 12
1.6 小结 20
第2章 如何对真实样本分类 22
2.1 Iris数据集 22
2.1.1 第一步是可视化 23
2.1.2 构建第一个分类模型 24
2.2 构建更复杂的分类器 28
2.3 更复杂的数据集和更复杂的分类器 29
2.3.1 从Seeds数据集中学习 29
2.3.2 特征和特征工程 30
2.3.3 最邻近分类 30
2.4 二分类和多分类 33
2.5 小结 34
第3章 聚类:寻找相关的帖子 35
3.1 评估帖子的关联性 35
3.1.1 不应该怎样 36
3.1.2 应该怎样 36
3.2 预处理:用相近的公共词语个数来衡量相似性 37
3.2.1 将原始文本转化为词袋 37
3.2.2 统计词语 38
3.2.3 词语频次向量的归一化 40
3.2.4 删除不重要的词语 41
3.2.5 词干处理 42
3.2.6 停用词兴奋剂 44
3.2.7 我们的成果和目标 45
3.3 聚类 46
3.3.1 K均值 46
3.3.2 让测试数据评估我们的想法 49
3.3.3 对帖子聚类 50
3.4 解决我们最初的难题 51
3.5 调整参数 54
3.6 小结 54
第4章 主题模型 55
4.1 潜在狄利克雷分配(LDA) 55
4.2 在主题空间比较相似度 59
4.3 选择主题个数 64
4.4 小结 65
第5章 分类:检测劣质答案 67
5.1 路线图概述 67
5.2 学习如何区分出优秀的答案 68
5.2.1 调整样本 68
5.2.2 调整分类器 68
5.3 获取数据 68
5.3.1 将数据消减到可处理的程度 69
5.3.2 对属性进行预选择和处理 70
5.3.3 定义什么是优质答案 71
5.4 创建第一个分类器 71
5.4.1 从k邻近(kNN)算法开始 71
5.4.2 特征工程 72
5.4.3 训练分类器 73
5.4.4 评估分类器的性能 74
5.4.5 设计更多的特征 74
5.5 决定怎样提升效果 77
5.5.1 偏差?方差及其折中 77
5.5.2 解决高偏差 78
5.5.3 解决高方差 78
5.5.4 高偏差或低偏差 78
5.6 采用逻辑回归 81
5.6.1 一点数学和一个小例子 81
5.6.2 在帖子分类问题上应用逻辑回归 83
5.7 观察正确率的背后:准确率和召回率 84
5.8 为分类器瘦身 87
5.9 出货 88
5.10 小结 88
第6章 分类II:情感分析 89
6.1 路线图概述 89
6.2 获取推特(Twitter)数据 89
6.3 朴素贝叶斯分类器介绍 90
6.3.1 了解贝叶斯定理 90
6.3.2 朴素 91
6.3.3 使用朴素贝叶斯进行分类 92
6.3.4 考虑未出现的词语和其他古怪情况 94
6.3.5 考虑算术下溢 95
6.4 创建第一个分类器并调优 97
6.4.1 先解决一个简单问题 97
6.4.2 使用所有的类 99
6.4.3 对分类器的参数进行调优 101
6.5 清洗推文 104
6.6 将词语类型考虑进去 106
6.6.1 确定词语的类型 106
6.6.2 用SentiWordNet成功地作弊 108
6.6.3 我们第一个估算器 110
6.6.4 把所有东西融合在一起 111
6.7 小结 112
第7章 回归:推荐 113
7.1 用回归预测房价 113
7.1.1 多维回归 116
7.1.2 回归里的交叉验证 116
7.2 惩罚式回归 117
7.2.1 L1和L2惩罚 117
7.2.2 在Scikit-learn中使用Lasso或弹性网 118
7.3 P大于N的情形 119
7.3.1 基于文本的例子 120
7.3.2 巧妙地设置超参数(hyperparameter) 121
7.3.3 评分预测和推荐 122
7.4 小结 126
第8章 回归:改进的推荐 127
8.1 改进的推荐 127
8.1.1 使用二值推荐矩阵 127
8.1.2 审视电影的近邻 129
8.1.3 组合多种方法 130
8.2 购物篮分析 132
8.2.1 获取有用的预测 133
8.2.2 分析超市购物篮 134
8.2.3 关联规则挖掘 136
8.2.4 更多购物篮分析的高级话题 137
8.3 小结 138
第9章 分类III:音乐体裁分类 139
9.1 路线图概述 139
9.2 获取音乐数据 139
9.3 观察音乐 140
9.4 用FFT构建第一个分类器 143
9.4.1 增加实验敏捷性 143
9.4.2 训练分类器 144
9.4.3 在多分类问题中用混淆矩阵评估正确率 144
9.4.4 另一种方式评估分类器效果:受试者工作特征曲线(ROC) 146
9.5 用梅尔倒频谱系数(MFCC)提升分类效果 148
9.6 小结 152
第10章 计算机视觉:模式识别 154
10.1 图像处理简介 154
10.2 读取和显示图像 155
10.2.1 图像处理基础 156
10.2.2 加入椒盐噪声 161
10.2.3 模式识别 163
10.2.4 计算图像特征 163
10.2.5 设计你自己的特征 164
10.3 在更难的数据集上分类 166
10.4 局部特征表示 167
10.5 小结 170
第11章 降维 171
11.1 路线图 171
11.2 选择特征 172
11.2.1 用筛选器检测冗余特征 172
11.2.2 用封装器让模型选择特征 178
11.3 其他特征选择方法 180
11.4 特征抽取 181
11.4.1 主成分分析(PCA) 181
11.4.2 PCA的局限性以及LDA会有什么帮助 183
11.5 多维标度法(MDS) 184
11.6 小结 187
第12章 大数据 188
12.1 了解大数据 188
12.2 用Jug程序包把你的处理流程分解成几个任务 189
12.2.1 关于任务 189
12.2.2 复用部分结果 191
12.2.3 幕后的工作原理 192
12.2.4 用Jug分析数据 192
12.3 使用亚马逊Web服务(AWS) 194
12.3.1 构建你的第一台机器 195
12.3.2 用starcluster自动创建集群 199
12.4 小结 202
附录A 更多机器学习知识 203
A.1 在线资源 203
A.2 参考书 203
A.2.1 问答网站 203
A.2.2 博客 204
A.2.3 数据资源 205
A.2.4 竞争日益加剧 205
A.3 还剩下什么 205
A.4 小结 206
索引 207