本书通过对大量实际案例的分析以及部分相关理论的适当解读,帮助读者使用Python语言进行程序设计,同时能够利用Python语言实现基础的机器学习算法。
全书包含三大部分:机器学习概念和编程基础、数据预处理基础、机器学习方法及案例,每一部分都结合大量实际例程进行解读。本书共13章,具体内容包括机器学习概述、Python机器学习基础库、数据预处理、K近邻算法、朴素贝叶斯、决策树、随机森林、AdaBoost模型、支持向量机、人工神经网络、K均值聚类、财政收入影响因素分析及预测案例、偷税漏税行为识别分析案例。书末给出两个附录,分别为Python的安装与环境配置和Python开发工具的安装。
本书适合作为电子信息类专业的教材,希望学习机器学习技术的读者均可使用。学习本书需要具备Python程序设计基础知识。
★本书免费提供书中程序代码和部分数据集、PPT及部分案例讲解视频、Python的安装与环境配置、Python开发工具的安装等资源,需要的读者可以扫描扉页二维码或从出版社网站查看。
自从AlphaGo在2016年3月战胜了人类围棋顶尖高手之后,人工智能、机器学习、深度学习等词汇就逐渐进入了大众的视野,机器学习也成为了学术界和工业界都极其关注的技术。机器学习是计算机研究领域的一个重要分支,是人工智能的核心基础,也是人工智能领域最具活力的研究方向之一。
机器学习的算法研究需要具备一定的理论基础,而其算法的产业应用又需要一定的编程基础。面对机器学习,不少人都想尝试和体验其神奇之处,但又苦于其较高的门槛而不知如何下手。尽管已经有许多介绍机器学习的优秀著作,但它们大多要么过于偏重理论,要么过于偏重应用,要么过于“厚重”,让人望而生畏。本书致力于将理论与实践相结合,在尽量通俗、形象地讲述理论知识的同时,利用Python这一简单、易学的编程语言进行机器学习算法的实践和应用。
鉴于上述写作思路,本书共设计了13章,主要包括以下内容:
第1章为机器学习基础,简要介绍机器学习的概念、应用、研究方法等;
第2章和第3章为Python应用于机器学习研究的基础内容,主要介绍Python中常用于机器学习的基本库以及机器学习应用中的数据预处理方法;
第4章到第11章为机器学习算法和基本实践,分别从分类任务和聚类任务两大方面介绍了八种常见的机器学习模型,每个模型除了介绍基本原理之外,都通过具体的案例介绍了算法的应用,方便读者复现练习;
第12章和第13章提供了两个完整的、相对复杂的案例,进一步说明机器学习方法的使用。
书中所有案例均来自于实际工程应用项目或者国际开源的比赛项目,对于科学研究和行业发展有一定的参考价值。
本书由西华大学电气与电子信息学院郭奕老师担任主编,郭老师主要编写了本书的第1、2、3、4、5、9、10、11章,东莞理工学院计算机科学与技术学院潘晓衡老师编写了本书的第6、7、8章,肖海林工程师编写了本书的第12、13章。本书中部分经典案例使用了开源数据集和开源代码。感谢王晓兰、汤微杰、周鑫、熊雪军、周永平同学在书稿校验和代码验证阶段所做的大量工作,同时也感谢在本书编写过程中给予我们帮助的其他朋友们。
本书相关的教学资料和程序源代码等可以在西安电子科技大学出版社的网站上下载。书中存在的不当和错误之处,敬请读者批评指正,我们不胜感谢。这里特留下作者邮箱以接受批评指正和进行相关讨论:lpngy@vip.163.com。
编 者?
2022年4月
第1章 机器学习概述 1
1.1 什么是机器学习 2
1.2 机器学习的应用 4
1.2.1 图像和计算机视觉 4
1.2.2 日常生活及消费 8
1.2.3 金融领域 9
1.2.4 医疗领域 9
1.2.5 自然语言处理 10
1.2.6 安全和异常行为监测 12
1.2.7 工业和商业领域 13
1.2.8 娱乐领域 14
1.3 机器学习的主要研究内容 15
1.4 机器学习问题的常规处理方法 16
1.4.1 开发机器学习应用的
一般步骤 16
1.4.2 选择合适的算法 18
1.4.3 使用Python开发机器
学习应用 19
1.4.4 机器学习模型的评价 21
1.5 机器学习、模式识别、数据
挖掘和人工智能的关系 24
本章小结 26
思考题 26
第2章 Python机器学习基础库 27
2.1 Numpy 28
2.1.1 Numpy库的安装 28
2.1.2 Numpy库的导入 28
2.1.3 创建数组 29
2.1.4 查询数组类型 29
2.1.5 数组的其他创建方式 29
2.1.6 数组元素的存取 30
2.1.7 ufunc运算 30
2.1.8 矩阵的运算 30
2.2 Pandas 30
2.2.1 Pandas的安装 31
2.2.2 Pandas的导入 31
2.2.3 Series 31
2.2.4 DataFrame 32
2.3 Matplotlib 32
2.3.1 Matplotlib的安装 32
2.3.2 Matplotlib的导入 32
2.3.3 基本绘图命令plot 33
2.3.4 绘制多窗口图形 35
2.3.5 文本注释 36
2.4 Scipy 37
2.4.1 Scipy的安装 37
2.4.2 Scipy的导入 38
2.4.3 最小二乘法 38
2.4.4 非线性方程求解 40
2.5 Scikit-Learn 40
2.5.1 Scikit-Learn的安装 41
2.5.2 Scikit-Learn的数据集 41
2.6 TensorFlow 42
2.6.1 TensorFlow的安装 42
2.6.2 TensorFlow的使用 43
2.7 PyTorch 44
2.8 PaddlePaddle 44
本章小结 45
思考题 45
第3章 数据预处理 46
3.1 数据预处理概述 47
3.2 数据预分析 47
3.2.1 统计特性分析 48
3.2.2 数据质量分析 49
3.3 数据清理 51
3.3.1 异常值处理 51
3.3.2 缺失值处理 51
3.4 数据集成 53
3.4.1 实体识别 53
3.4.2 冗余属性识别 54
3.5 数据变换 54
3.5.1 简单函数变换 54
3.5.2 归一化 54
3.5.3 连续属性离散化 55
3.6 数据规约 58
3.6.1 属性规约 58
3.6.2 数值规约 60
3.7 Python的主要数据预处理函数 60
本章小结 61
思考题 61
第4章 K近邻算法 62
4.1 模型介绍 63
4.1.1 算法概述 63
4.1.2 算法基本原理 63
4.1.3 算法实现代码 65
4.2 案例一 约会网站配对 66
4.2.1 问题介绍 66
4.2.2 数据准备 67
4.2.3 算法实现 70
4.2.4 算法测试 71
4.2.5 算法应用 72
4.3 案例二 手写数字识别 73
4.3.1 问题介绍 73
4.3.2 数据准备 73
4.3.3 算法实现 74
4.4 案例三 鸢尾花品种识别 76
4.4.1 问题介绍 76
4.4.2 数据准备 76
4.4.3 算法实现 78
本章小结 79
思考题 79
第5章 朴素贝叶斯 80
5.1 模型介绍 81
5.1.1 贝叶斯决策理论基础 81
5.1.2 使用朴素贝叶斯进行分类 82
5.1.3 朴素贝叶斯分类器的特点 83
5.2 案例四 社区留言板文本分类 84
5.2.1 案例介绍 84
5.2.2 数据准备 84
5.2.3 概率计算 86
5.2.4 算法改进 87
5.2.5 改进后的朴素贝叶斯
分类器应用 89
5.3 案例五 旧金山犯罪分类预测 90
5.3.1 案例介绍 90
5.3.2 数据准备 91
5.3.3 模型实现 92
本章小结 93
思考题 93
第6章 决策树 94
6.1 模型介绍 95
6.1.1 决策树概述 95
6.1.2 决策树数学基础 100
6.1.3 决策树算法 102
6.2 案例六 鱼类和非鱼类判定 103
6.2.1 案例介绍 103
6.2.2 案例实现 104
6.3 案例七 贷款权限判定 114
6.3.1 案例介绍 114
6.3.2 案例实现 115
本章小结 119
思考题 119
第7章 随机森林 121
7.1 模型介绍 122
7.1.1 随机森林的历史 122
7.1.2 随机森林原理 122
7.1.3 构建随机森林 123
7.1.4 随机森林模型的性能评估 124
7.1.5 随机森林的应用 125
7.1.6 随机森林的Python常用库 125
7.2 案例八 声呐信号分类 126
7.2.1 案例介绍 126
7.2.2 案例实现 127
7.3 案例九 泰坦尼克号幸存者预测 132
7.3.1 案例介绍 132
7.3.2 案例实现 133
本章小结 139
思考题 139
第8章 AdaBoost模型 140
8.1 模型介绍 141
8.1.1 AdaBoost原理 141
8.1.2 AdaBoost的算法流程 142
8.1.3 AdaBoost的Python常用库 144
8.2 案例十 马疝病预测 146
8.2.1 案例介绍 146
8.2.3 案例实现 146
8.3 案例十一 学生课程成绩预测 149
8.3.1 案例介绍 149
8.3.2 案例实现 150
本章小结 154
思考题 154
第9章 支持向量机 155
9.1 线性支持向量机 156
9.1.1 间隔与支持向量 156
9.1.2 对偶问题 158
9.1.3 SMO算法 159
9.2 非线性分类 170
9.2.1 核函数概述 170
9.2.2 高斯径向基核函数 171
9.3 案例十二 手写数字识别 175
本章小结 179
思考题 179
第10章 人工神经网络 180
10.1 从感知机到多层感知机 181
10.1.1 神经元和感知机 181
10.1.2 多层感知机 183
10.2 激活函数和损失函数 184
10.2.1 激活函数 184
10.2.2 损失函数 186
10.3 反向传播算法 187
10.4 案例十三 手写数字识别 188
10.4.1 数据准备 188
10.4.2 网络配置 189
10.4.3 模型训练 190
10.4.4 模型使用 193
本章小结 195
思考题 195
第11章 K均值聚类 196
11.1 模型介绍 197
11.1.1 模型概述 197
11.1.2 基本的K均值聚类算法 197
11.1.3 K均值聚类算法的代码实现 198
11.1.4 二分K均值算法 202
11.2 案例十四 居民家庭消费调查 204
11.2.1 案例介绍 204
11.2.2 案例实现 205
11.3 案例十五 物流公司最佳
配送路径问题 207
本章小结 210
思考题 210
第12章 财政收入影响因素分析及
预测案例 212
12.1 案例引入 213
12.2 模型介绍 213
12.3 案例操作 215
12.3.1 案例步骤 215
12.3.2 案例实现 215
本章小结 221
思考题 221
第13章 偷税漏税行为识别分析案例 222
13.1 案例引入 223
13.2 模型介绍 223
13.3 案例操作 224
13.3.1 案例步骤 224
13.3.2 案例实现 224
本章小结 232
思考题 232
附录A Python的安装与环境配置 233
A.1 Python的官方安装 233
A.1.1 Python的官方下载 233
A.1.2 Python的官方安装 235
A.1.3 手动配置环境变量 239
A.2 Anaconda的安装 242
A.2.1 Anaconda的下载 242
A.2.2 Anaconda的安装 244
A.2.3 手动配置Anaconda的环境
?变量 250
A.2.4 Anaconda的运行 250
附录B Python开发工具的安装 252
B.1 Jupyter Notebook的安装 252
B.1.1 Jupyter Notebook的下载和
安装 252
B.1.2 Jupyter Notebook的运行 255
B.2 PyCharm的安装 257
B.2.1 PyCharm的下载 257
B.2.2 PyCharm的安装 259