
本书从数据集、数据清理开始谈起,在介绍机器学习的建模方式后,第2章详细说明了机器学习与深度学习所涉及的矩阵、向量等技术。第3章使用Keras搭建深度学习模型,也介绍了激活函数、损失函数、反向传播、过拟合或欠拟合等问题。第4章给出了训练深度学习模型的过程中可能存在的交叉验证问题。当需要提高模型精度时,可以考虑参考第5章中的L1/L2正则化、丢弃正则化、早停等方式。第6章讲解模型评估问题,在太平洋飓风数据集上指出准确率的局限性,从而引出混淆矩阵、ROC曲线、AUC评分等概念。接下来的3章介绍卷积神经网络、迁移学习、循环神经网络等问题,这些内容在工业实际项目中占据核心地位,值得大家多写代码、多实践。
配套资源
如果您了解数据科学和机器学习的基础知识,并想开始学习先进的机器学习技术,如人工神经网络和深度学习,那么本书非常适合您。为了更有效地掌握本书中解释的概念,必须具备Python编程经验,以及熟悉统计和逻辑回归等知识。
本书内容
第1章: Keras 机器学习简介。本章通过scikitlearn包介绍基础的机器学习概念。将介绍如何使用数据,然后用一个真实存在的数据集训练一个逻辑回归模型。
第2章: 机器学习与深度学习。本章介绍了传统机器学习算法和深度学习算法的不同。您将学习建立神经网络,并学习用Keras库建立第一个神经网络所需的线性转换。
第3章: Keras深度学习。本章将扩展您对神经网络构建的了解,您将学习如何构建多层神经网络,在训练数据时判断模型是否过拟合或欠拟合。
第4章: 基于Keras包装器的交叉验证评价模型。本章将教大家如何将Keras模型整合到scikitlearn工作流程中。用交叉验证来评估您的模型并使用此技术来选择最佳超参数。
第5章: 模型精度的提高。本章介绍了多种正则化方法,用于防止在训练数据时模型过拟合。可通过多种方法获得最优超参数以达到模型最高正确率。
第6章:模型评估。本章演示了模型评估所需要的各种方法。除正确率外,还将介绍更多模型评估指标,如灵敏度、特异性、精确度、误报率、ROC曲线和AUC评分,以了解模型的表现。
第7章: 基于卷积神经网络的计算机视觉。本章介绍了如何使用卷积神经网络构建图形分类器。介绍卷积神经网络的所有组件,然后构建图像处理程序对图像进行分类。
第8章: 迁移学习和预训练模型。本章介绍了迁移学习的基本概念,即如何通过一个模型解决其他问题。您将通过使用不同的预训练模型并将其稍微修改为不同的应用程序来实现这一目标。
第9章: 基于循环神经网络的顺序建模。本章将教大家如何为顺序数据集建立模型。介绍了循环神经网络的架构,以及如何训练它们并预测后续数据。您将通过预测各种股票的未来价值来检测您的学习成果。
代码演示
本书中通过实操在屏幕中出现的代码,将以如下形式展现:
跨多行的代码行使用反斜杠(\)分割。当代码执行时,Python将忽略反斜杠,并将下一行的代码视为当前行的直接延续,如下所示:
代码中“#”用于标示单行文字注释,如下所示:
多行注释使用三引号括起来,如下所示:
配置编译环境
在学习本书前,先安装以下软件和工具。
1. 安装Anaconda
本课程将使用Anaconda: 一个Python发行版,带有内置的包管理器和经常用于机器学习和科学计算的预安装包。
按照适用于自己操作系统的相应安装说明进行操作。
安装Anaconda后,可以通过Anaconda Navigator或Anaconda Prompt与其进行交互。
验证安装是否正确,可以在CMD/终端上执行anacondanavigator命令。如果安装正确,将会打开Anaconda Navigator。
2. 安装工具库
pip预装在Anaconda中。在机器上安装Anaconda后,可以使用pip安装所有必需的库,如pip install numpy。或者使用pip installr requirements.txt安装所有必需的库。可以在https://packt.live/3hhZ2v9找到requirements.txt文件。
训练和实践将在Jupyter Notebook中执行。Jupyter是一个Python库,可以通过与其他Python库相同的方式安装——使用pip install jupyter安装,但它已经预装在了Anaconda里。
3. 运行 Jupyter Notebook
可以通过Anaconda Navigator中的相应链接启动Jupyter,或通过在Anaconda Prompt/CMD/Terminal中执行命令jupyter notebook来启动Jupyter。
Jupyter在浏览器中打开,可以在其中导航到工作目录并创建、编辑和运行代码文件。
配套资源
第1章Keras机器学习简介
1.1机器学习简介
1.2数据展示
1.2.1数据表格
1.2.2加载数据
训练1.01从UCI机器学习代码库加载一个数据集
1.3数据处理
训练1.02清理数据
训练1.03数据的正确表示
1.4模型创建的生命周期
1.5scikitlearn简介
1.6Keras简介
1.6.1Keras的优点
1.6.2Keras的缺点
1.6.3Keras在其他方面的应用
1.7模型训练
1.7.1分类器和回归模型
1.7.2分类任务
1.7.3回归任务
1.7.4训练和测试数据集
1.7.5模型评估矩阵
训练1.04创建一个简单的模型
1.8模型微调
1.8.1基线模型
训练1.05设计一个基线模型
1.8.2正则化
1.8.3交叉验证
实践1.01向模型添加正则化
1.9总结
第2章机器学习与深度学习
2.1简介
2.1.1ANN的优势
2.1.2传统机器学习算法的优势
2.1.3分层数据的表示
2.2线性变换
2.2.1标量、向量、矩阵和张量
2.2.2张量相加
训练2.01使用向量、矩阵和张量执行各种操作
2.2.3重塑
2.2.4矩阵转置
训练2.02矩阵重塑和转置
2.2.5矩阵乘法
训练2.03将矩阵相乘
训练2.04将矩阵乘法应用于高阶张量
2.3Keras实现
2.3.1层的类型
2.3.2激活函数
2.3.3模型拟合
实践2.01使用Keras创建逻辑回归模型
2.4总结
第3章Keras深度学习
3.1简介
3.2搭建第一个神经网络
3.2.1从逻辑回归到深度神经网络
3.2.2激活函数
3.2.3用于预测的前向传播
3.2.4损失函数
3.2.5反向传播计算损失函数的导数
3.2.6通过梯度下降法学习参数
训练3.01使用Keras实现神经网络
实践3.01构建单层神经网络进行二进制分类
3.3模型评估
3.3.1用Keras进行模型评估
3.3.2将数据集拆分为训练集和测试集
3.3.3过拟合和欠拟合
3.3.4早停
实践3.02神经网络与高级纤维化诊断
3.4总结
第4章基于Keras包装器的交叉验证评价模型
4.1简介
4.2交叉验证
4.2.1只分割一次数据集的弊端
4.2.2kfold交叉验证
4.2.3留一法交叉验证
4.2.4kfold交叉验证和LOO交叉验证的比较
4.3深度学习模型的交叉验证方法
4.3.1带有scikitlearn的Keras包
训练4.01在回归问题中使用scikitlearn构建Keras包装器
4.3.2使用scikitlearn进行交叉验证
4.3.3scikitlearn中的交叉验证迭代器
训练4.02使用交叉验证评估深度神经网络
实践4.01使用交叉验证对晚期肝纤维化诊断分类器进行模型评估
4.4利用交叉验证选择模型
训练4.03编写自定义函数实现含有交叉验证的深度学习模型
实践4.02用交叉验证为高纤维化诊断分类器选择模型
实践4.03在Traffic Volume数据集上使用交叉验证进行模型选择
4.5总结
第5章模型精度的提高
5.1简介
5.2正则化
5.2.1正则化的需求
5.2.2用正则化减少过拟合
5.3L1和L2正则化
5.3.1L1和L2正则化公式
5.3.2Keras的L1和L2正则化实现
实践5.01Avila模式分类器上的权重正则化
5.4丢弃正则化
5.4.1丢弃正则化原理
5.4.2使用丢弃正则化减少过拟合
训练5.01使用Keras实现丢弃正则化
实践5.02Traffic Volume数据集的丢弃正则化
5.5其他正则化方法
5.5.1在Keras中实现早停
训练5.02用Keras实现早停
5.5.2数据增强
5.5.3添加噪声
5.6scikitlearn超参数调优
5.6.1使用scikitlearn进行网格搜索
5.6.2使用scikitlearn进行随机搜索
实践5.03对Avila模式分类器进行超参数调优
5.7总结
第6章模型评估
6.1简介
6.2准确率
训练6.01计算太平洋飓风数据集的零精度
6.3不平衡数据集
6.4混淆矩阵
训练6.02Scania卡车数据的计算精度和零精度
实践6.01改变训练/测试比例,计算神经网络的准确率和零精度
训练6.03基于混淆矩阵推导和计算指标
实践6.02计算ROC曲线和AUC评分
6.5总结
第7章基于卷积神经网络的计算机视觉
7.1简介
7.2计算机视觉
7.3卷积神经网络
7.4卷积神经网络架构
7.4.1输入图像
7.4.2卷积层
7.4.3池化层
7.4.4扁平化
7.5图像增强
训练7.01创建一个识别图像中汽车和花的卷积神经网络
实践7.01用多个卷积层和softmax层对模型进行修复
训练7.02用sigmoid激活函数对模型进行修复
训练7.03将优化器Adam更改为SGD
训练7.04对一个新图像进行分类
实践7.02对另一个新图像进行分类
7.6总结
第8章迁移学习和预训练模型
8.1简介
8.2预训练与迁移学习
8.3对预训练的网络进行微调
8.3.1ImageNet数据集
8.3.2Keras的一些预训练网络
训练8.01使用VGG16网络识别图像
实践8.01使用VGG16网络训练深度学习网络识别图像
训练8.02对不在ImageNet数据集中的图像进行分类
训练8.03微调VGG16模型
训练8.04使用ResNet进行图像分类
实践8.02使用ResNet进行图像分类
8.4总结
第9章基于循环神经网络的顺序建模
9.1简介
9.2顺序记忆和顺序建模
9.3循环神经网络
9.3.1梯度消失问题
9.3.2梯度爆炸问题的简析
9.4长短期记忆网络
训练9.01使用50个单元(神经元)的LSTM预测Alphabet股价趋势
实践9.01使用50个单元(神经元)的LSTM预测亚马逊股价趋势
训练9.02使用100个单元(神经元)的LSTM预测Alphabet股价趋势
实践9.02通过添加正则化预测亚马逊股价
实践9.03使用100个单元(神经元)的LSTM预测亚马逊股价趋势
9.5总结
附录A各章实践内容解析
本书用丰富的实践和实训带领读者使用Keras来进行深度学习的开发,实用性强,具有很好的应用价值。