本书是一本创建真实世界智能系统的问题解决指南。提供了一种包含概念、实践、实际示例和代码示例的综合方法,教给读者理解和解决机器学习不同问题所需的重要技能。通过介绍Python机器学习生态系统中的真实案例研究,教授成为一个成功的实践者所必需的机器学习技术。本书还侧重于机器学习的基础知识,以解决不同领域的真实世界案例,包括生物医学信号分析、医疗保健、安全、经济和金融。此外,它涵盖了广泛的机器学习模型,包括回归、分类和预测。
机器学习解决方案的飞速发展及其在工业界的广泛应用极大地推动了其从不同领域中观察(学习)数据,从而学习到复杂模型解决实际问题的能力。通常,创造出高效的学习模型并且得到可靠的结果需要付出大量的时间和成本。掌握项目的主要概念一般可以通过以下方式完成:构建可靠的数据流程管道,通过特征提取及选择进行数据分析和可视化,建模。因此,对于一个可靠的机器学习解决方案而言,不仅包括机器学习模型开发框架本身,还包括成功的预处理模块、可视化、系统集成以及健全的运行时部署和维护设定。Python是一种具有多种功能的创新编程语言,其简单的实现和集成、活跃的开发者社区以及不断成长的机器学习生态系统,对于机器学习的发展及广泛应用做出了极大的贡献。
技术的不断进步使得智能组织以及数据驱动的企业成为现实。如今,当数据成了重中之重,市场对于机器学习以及数据科学从业人员的需求十分庞大。实际上,我们正面临着数据科学家以及机器学习专家的短缺。从事21世纪热门的职业毫无疑问要在这个领域有专家级的经验。
机器学习技术是一系列计算机算法,包括人工神经网络、k近邻算法、支持向量机、决策树算法以及深度学习。机器学习当前应用于许多领域,尤其是经济学、安全、医疗保健、生物医学以及生物医学工程。本书介绍如何使用机器学习技术来分析这些领域的数据。
本书作者有很多使用Python及其机器学习生态系统来解决实际问题的经验。本书旨在提升读者的技能水平,使大家能够创建实际的机器学习解决方案。同时,本书亦是一本构建实际智能系统的问题解决指南,它提供了一个包括原则、过程、实际案例以及代码的系统框架。同时,本书也包括读者在理解和解决不同的机器学习问题时所需的重要技能。
对于正在进行机器学习开发的读者而言,本书是一本绝佳的参考,因为书中包含了众多使用Python机器学习环境进行开发的实际案例。本书旨在为读者使用机器学习知识解决不同领域的实际问题打下坚实基础,这些实际问题涉及生物医学信号分析、医疗保健、安全、经济以及金融领域。此外,本书还介绍了一系列机器学习模型,包括回归、分类、聚类以及预测等方向。
本书共七章。第1章主要介绍基于机器学习的数据分析。第2章概述一些数据预处理技术,例如特征提取、转换、特征选择以及降维。第3章概述一些常见的用于预报、预测和分类的机器学习技术,例如朴素贝叶斯、k近邻、人工神经网络、支持向量机、决策树、随机森林、装袋、提升、堆叠、投票、深度神经网络、循环神经网络和卷积神经网络。第4章主要呈现一些医疗保健领域中的分类案例,包括常用于生物医学信号分析和识别的技术,例如心电图(ECG)、脑电图(EEG)和肌电图(EMG)信号处理。此外,第4章还会介绍一些医疗数据分类案例,例如人体行为识别,基于微阵列基因表达的癌症、乳腺癌、糖尿病和心脏病检测等。第5章主要介绍一些实际应用,包括入侵检测、钓鱼网站检测、垃圾邮件检测、信用评分、信用卡欺诈检测、手写数字识别、图像分类和文本分类。第6章主要介绍一些回归技术的案例,例如股市分析、经济变量预测、电力负荷预测、风速预测、旅游需求预测以及房价预测。第7章包括一些无监督学习技术的案例(聚类)。
本书主要目的是帮助包括IT专业人员、分析师、开发人员、数据科学家和工程师在内的广大读者掌握解决实际问题的能力。此外,本书也可作为数据科学和机器学习领域的研究生教材。同时,本书还能帮助研究人员建立起使用机器学习技术进行数据分析的基础。另外,本书还将帮助包括研究人员、专业人士、学者和一系列学科的研究生在内的广大读者,尤其是那些刚开始寻求在生物医学信号分析、医疗数据分析、金融和经济数据预测以及计算机安全等领域应用机器学习技术的读者。
执行本书所提供的代码示例需要在macOS、Linux或Microsoft Windows上安装Python 3.x或更高版本。本书中的代码示例经常使用Python的基本库,例如SciPy、NumPy、scikit-learn、matplotlib、pandas、OpenCV、TensorFlow和Keras。
译者序
前言
致谢
第1章 简介1
1.1 什么是机器学习1
1.1.1 为什么需要使用机器学习2
1.1.2 做出数据驱动决策3
1.1.3 定义以及关键术语4
1.1.4 机器学习的关键任务6
1.1.5 机器学习技术6
1.2 机器学习框架6
1.2.1 数据收集7
1.2.2 数据描述7
1.2.3 探索性数据分析7
1.2.4 数据质量分析8
1.2.5 数据准备8
1.2.6 数据集成8
1.2.7 数据整理8
1.2.8 特征缩放和特征提取9
1.2.9 特征选择及降维9
1.2.10 建模9
1.2.11 选择建模技术9
1.2.12 构建模型10
1.2.13 模型评估及调优10
1.2.14 实现以及检验已经创建的模型10
1.2.15 监督学习框架11
1.2.16 无监督学习框架11
1.3 性能评估12
1.3.1 混淆矩阵13
1.3.2 F值分析14
1.3.3 ROC分析15
1.3.4 Kappa统计量15
1.3.5 度量了什么16
1.3.6 如何度量17
1.3.7 如何解释估计17
1.3.8 scikit-learn中的k折交叉验证18
1.3.9 如何选择正确的算法18
1.4 Python机器学习环境18
1.4.1 缺陷20
1.4.2 缺点20
1.4.3 NumPy库20
1.4.4 Pandas20
1.5 本章小结21
1.6 参考文献22
第2章 数据预处理23
2.1 简介23
2.2 特征提取和转换24
2.2.1 特征类型24
2.2.2 统计特征25
2.2.3 结构化特征27
2.2.4 特征转换28
2.2.5 阈值化和离散化28
2.2.6 数据操作28
2.2.7 标准化29
2.2.8 归一化和校准33
2.2.9 不完整的特征34
2.2.10 特征提取的方法36
2.2.11 使用小波变换进行特征提取38
2.3 降维45
2.3.1 特征构造和选择47
2.3.2 单变量特征选择48
2.3.3 递归式特征消除51
2.3.4 从模型选择特征52
2.3.5 主成分分析53
2.3.6 增量PCA57
2.3.7 核PCA58
2.3.8 邻近成分分析59
2.3.9 独立成分分析61
2.3.10 线性判别分析65
2.3.11 熵67
2.4 基于聚类的特征提取和降维68
2.5 参考文献75
第3章 机器学习技术77
3.1 简介77
3.2 什么是机器学习78
3.2.1 理解机器学习78
3.2.2 如何让机器学习78
3.2.3 多学科领域79
3.2.4 机器学习问题80
3.2.5 机器学习的目标80
3.2.6 机器学习的挑战81
3.3 Python库81
3.3.1 scikit-learn81
3.3.2 TensorFlow83
3.3.3 Keras84
3.3.4 使用Keras构建模型84
3.3.5 自然语言工具包85
3.4 学习场景87
3.5 监督学习算法88
3.5.1 分类89
3.5.2 预报、预测和回归90
3.5.3 线性模型90
3.5.4 感知机98
3.5.5 逻辑回归100
3.5.6 线性判别分析102
3.5.7 人工神经网络105
3.5.8 k近邻109
3.5.9 支持向量机113
3.5.10 决策树分类器118
3.5.11 朴素贝叶斯123
3.5.12 集成学习126
3.5.13 bagging算法127
3.5.14 随机森林131
3.5.15 boosting算法136
3.5.16 其他集成方法146
3.5.17 深度学习151
3.5.18 深度神经网络152
3.5.19 循环神经网络155
3.5.20 自编码器157
3.5.21 长短期记忆网络157
3.5.22 卷积神经网络160
3.6 无监督学习162
3.6.1 k均值算法163
3.6.2 轮廓系数165
3.6.3 异常检测167
3.6.4 关联规则挖掘170
3.7 强化学习170
3.8 基于实例的学习171
3.9 本章小结171
3.10 参考文献172
第4章 医疗保健分类示例174
4.1 简介174
4.2 脑电图信号分析175
4.2.1 癫痫症的预测和检测176
4.2.2 情绪识别194
4.2.3 局灶性和非局灶性癫痫EEG信号的分类201
4.2.4 偏头痛检测212
4.3 EMG信号分析217
4.3.1 神经肌肉疾病的诊断218
4.3.2 假体控制中的EMG信号225
4.3.3 康复机器人中的EMG信号232
4.4 心电图信号分析238
4.5 人类活动识别247
4.5.1 基于传感器的人类活动识别248
4.5.2 基于智能手机的人类活动识别250
4.6 用于癌症检测的微阵列基因表达数据分类256
4.7 乳腺癌检测257
4.8 预测胎儿风险的心电图数据分类260
4.9 糖尿病检测263
4.10 心脏病检测267
4.11 慢性肾脏病的诊断270
4.12 本章小结273
4.13 参考文献273
第5章 其他分类示例277
5.1 入侵检测277
5.2 钓鱼网站检测280
5.3 垃圾邮件检测283
5.4 信用评分287
5.5 信用卡欺诈检测290
5.6 使用CNN进行手写数字识别297
5.7 使用CNN进行Fashion-MNIST图像分类306
5.8 使用CNN进行CIFAR图像分类313
5.9 文本分类321
5.10 本章小结334
5.11 参考文献334
第6章 回归示例337
6.1 简介337
6.2 股票市场价格指数收益预测338
6.3 通货膨胀预测356
6.4 电力负荷预测358
6.5 风速预测365
6.6 旅游需求预测370
6.7 房价预测380
6.8 单车使用情况预测395
6.9 本章小结399
6.10 参考文献400
第7章 聚类示例402
7.1 简介402
7.2 聚类403
7.2.1 评估聚类输出404
7.2.2 聚类分析的应用404
7.2.3 可能的聚类数405
7.2.4 聚类算法种类405
7.3 k均值聚类算法406
7.4 k中心点聚类算法408
7.5 层次聚类409
7.5.1 聚集聚类算法409
7.5.2 分裂聚类算法412
7.6 模糊c均值聚类算法416
7.7 基于密度的聚类算法418
7.7.1 DBSCAN算法418
7.7.2 OPTICS聚类算法420
7.8 基于期望化的混合高斯模型聚类算法423
7.9 贝叶斯聚类426
7.10 轮廓分析428
7.11 基于聚类的图像分割430
7.12 基于聚类的特征提取433
7.13 基于聚类的分类439
7.14 本章小结442
7.15 参考文献442