产品特色
编辑推荐
想深入应用手中的数据?还是想在上千份文件上重复同样的分析过程?没有编程经验的非程序员们如何能在zui短的时间内学会用当今炙手可热的Python语言进行数据分析?
来自Facebook的数据专家Clinton Brownley可以帮您解决上述问题。在他的这本书里,读者将能掌握基本Python编程方法,学会编写出处理电子表格和数据库中的数据的脚本,并了解使用Python模块来解析文件、分组数据和生成统计量的方法。
- 学习基础语法,创建并运行自己的Python脚本
- 读取和解析CSV文件
- 读取多个Excel工作表和工作簿
- 执行数据库操作
- 搜索特定记录、分组数据和解析文本文件
- 建立统计图并绘图
- 生成描述性统计量并估计回归模型和分类模型
- 在Windows和Mac环境下按计划自动运行脚本
内容简介
本书展示如何用Python程序将不同格式的数据处理和分析任务规模化和自动化。主要内容包括:Python基础知识介绍、CSV文件和Excel文件读写、数据库的操作、示例程序演示、图表的创建,等等。
作者简介
Clinton W. Brownley博士,Facebook数据科学家,负责大数据流水线、统计建模和数据可视化项目,并为大型基础设施建设提供数据驱动的决策建议。
目录
前言 xi
第 1 章 Python 基础 1
1.1 创建 Python 脚本 1
1.2 运行 Python 脚本 3
1.3 与命令行进行交互的几项技巧 6
1.4 Python 语言基础要素 10
1.4.1 数值 10
1.4.2 字符串 12
1.4.3 正则表达式与模式匹配 16
1.4.4 日期 19
1.4.5 列表 21
1.4.6 元组 26
1.4.7 字典 27
1.4.8 控制流 30
1.5 读取文本文件 35
1.5.1 创建文本文件 36
1.5.2 脚本和输入文件在同一位置 38
1.5.3 读取文件的新型语法 38
1.6 使用 glob 读取多个文本文件 39
1.7 写入文本文件 42
1.7.1 向 first_script.py 添加代码 42
1.7.2 写入 CSV 文件 45
1.8 print 语句 46
1.9 本章练习 47
第 2 章 CSV文件 48
2.1 基础 Python 与 pandas 50
2.1.1 读写 CSV 文件(第 1 部分)50
2.1.2 基本字符串分析是如何失败的 56
2.1.3 读写 CSV 文件(第 2 部分)57
2.2 筛选特定的行 58
2.2.1 行中的值满足某个条件 59
2.2.2 行中的值属于某个集合 60
2.2.3 行中的值匹配于某个模式/ 正则表达式 62
2.3 选取特定的列 64
2.3.1 列索引值 64
2.3.2 列标题 65
2.4 选取连续的行 67
2.5 添加标题行 69
2.6 读取多个 CSV 文件 71
2.7 从多个文件中连接数据 75
2.8 计算每个文件中值的总和与均值 78
2.9 本章练习 81
第 3 章 Excel 文件 82
3.1 内省 Excel 工作簿 84
3.2 处理单个工作表 88
3.2.1 读写 Excel 文件 88
3.2.2 筛选特定行 92
3.2.3 选取特定列 98
3.3 读取工作簿中的所有工作表 101
3.3.1 在所有工作表中筛选特定行 102
3.3.2 在所有工作表中选取特定列 104
3.4 在 Excel 工作簿中读取一组工作表 106
3.5 处理多个工作簿 108
3.5.1 工作表计数以及每个工作表中的行列计数 110
3.5.2 从多个工作簿中连接数据 111
3.5.3 为每个工作簿和工作表计算总数和均值 113
3.6 本章练习 117
第 4 章 数据库 118
4.1 Python 内置的 sqlite3 模块 119
4.1.1 向表中插入新记录 124
4.1.2 更新表中记录 128
4.2 MySQL 数据库 131
4.2.1 向表中插入新记录 135
4.2.2 查询一个表并将输出写入 CSV 文件 140
4.2.3 更新表中记录 142
4.3 本章练习 146
第 5 章 应用程序 147
5.1 在一个大文件集合中查找一组项目 147
5.2 为 CSV 文件中数据的任意数目分类计算统计量 158
5.3 为文本文件中数据的任意数目分类计算统计量 167
5.4 本章练习 174
第 6 章 图与图表 175
6.1 matplotlib 175
6.1.1 条形图 175
6.1.2 直方图 177
6.1.3 折线图 178
6.1.4 散点图 180
6.1.5 箱线图 181
6.2 pandas 183
6.3 ggplot 184
6.4 seaborn 186
第 7 章 描述性统计与建模 192
7.1 数据集 192
7.1.1 葡萄酒质量 192
7.1.2 客户流失 193
7.2 葡萄酒质量 194
7.2.1 描述性统计 194
7.2.2 分组、直方图与 t 检验 195
7.2.3 成对变量之间的关系和相关性 196
7.2.4 使用最小二乘估计进行线性回归 198
7.2.5 系数解释 200
7.2.6 自变量标准化 200
7.2.7 预测 202
7.3 客户流失 203
7.3.1 逻辑斯蒂回归 205
7.3.2 系数解释 207
7.3.3 预测 208
第 8 章 按计划自动运行脚本 209
8.1 任务计划程序(Windows 系统)209
8.2 cron 工具(macOS 系统和 Unix 系统)215
8.2.1 cron 表文件:一次性设置 216
8.2.2 向 cron 表文件中添加 cron 任务 216
第 9 章 从这里启航 220
9.1 更多的标准库模块和内置函数 221
9.1.1 Python 标准库(PSL):更多的标准模块 221
9.1.2 内置函数 222
9.2 Python 包索引(PyPI):更多的扩展模块 222
9.2.1 NumPy 223
9.2.2 SciPy 227
9.2.3 Scikit-Learn 230
9.2.4 更多的扩展包 232
9.3 更多的数据结构 232
9.3.1 栈 233
9.3.2 队列 233
9.3.3 图 233
9.3.4 树 234
9.4 从这里启航 234
附录A 下载指南 236
附录B 练习答案 245
作者介绍 247
封面介绍 247
深度学习模型训练的艺术:从理论到实践的全景解析 本书并非一本介绍Python数据分析基础的入门读物,而是将视角聚焦于当今人工智能领域最为核心且令人着迷的课题之一——深度学习模型的训练。我们旨在为读者提供一个全面、深入且极具实践指导意义的学习路径,揭示深度学习模型从概念构想到最终落地应用的完整流程,以及其中蕴含的科学原理与工程技巧。 为何要深入理解模型训练? 在信息爆炸的时代,数据无处不在,而深度学习模型正是挖掘这些数据价值、解锁其潜在智能的强大钥匙。然而,仅仅了解模型结构或调用现成的库函数是远远不够的。模型的表现、泛化能力以及对特定任务的适应性,很大程度上取决于其训练过程的质量。模型训练不仅是一个简单的“喂数据、出结果”的过程,更是一门融合了数学、统计学、优化理论以及计算机科学的精妙艺术。掌握模型训练的深层机制,意味着我们能够: 更好地理解模型行为: 洞察模型在训练过程中为何会收敛、为何会过拟合、为何会陷入局部最优等问题。 更有效地调优模型: 针对模型性能瓶颈,精准地调整超参数、选择合适的优化器、设计更有效的正则化策略。 解决复杂实际问题: 应对现实世界中数据稀疏、噪声干扰、计算资源受限等挑战,构建鲁棒且高性能的深度学习解决方案。 推动模型创新: 深刻理解训练的原理,是进行模型架构改进、算法探索乃至原创性研究的基础。 本书的内容框架与特色 本书内容将围绕深度学习模型训练的各个关键环节展开,力求从理论根基到实践操作,做到细致入微,环环相扣。 第一部分:模型训练的理论基石 在深入实践之前,我们必须牢固掌握模型训练背后的数学和统计学原理。 第一章:深度学习模型概述与训练目标 我们将简要回顾深度学习的基本构成单元(神经网络、激活函数、损失函数),并重点阐述模型训练的核心目标:最小化损失函数,使模型在未见过的数据上也能表现良好(泛化)。 深入探讨各种损失函数的设计理念,例如均方误差(MSE)、交叉熵(Cross-Entropy)在分类和回归任务中的适用性,以及更复杂的损失函数如Focal Loss或IoU Loss在特定场景下的优势。 引入模型复杂度与泛化能力的关系,解释欠拟合(Underfitting)和过拟合(Overfitting)的根源。 第二章:优化算法:驱动模型学习的引擎 我们将从最基础的梯度下降(Gradient Descent)出发,详细解析其工作原理、学习率(Learning Rate)的重要性以及不同步长选择策略。 进一步介绍随机梯度下降(SGD)及其变种,如动量(Momentum)、Nesterov动量,它们如何帮助模型加速收敛并跳出局部最优。 重点讲解自适应学习率优化器,包括Adagrad、RMSprop、Adam及其最新的改进版本(如AdamW)。我们将分析它们在不同场景下的性能表现、参数更新机制以及各自的优缺点,并提供选择指南。 探讨二阶优化方法(如牛顿法、拟牛顿法),虽然在深度学习中应用较少,但其理论思想有助于理解优化的收敛速度和性质。 第三章:反向传播算法:计算梯度的核心 我们将详细拆解链式法则(Chain Rule)在深度学习中的应用,清晰地阐述反向传播算法如何有效地计算模型参数相对于损失函数的梯度。 通过图解和实例,演示反向传播在多层网络中的传播过程,帮助读者理解梯度如何从输出层逐层回溯至输入层。 讨论梯度消失(Vanishing Gradient)和梯度爆炸(Exploding Gradient)问题,分析其产生原因(如激活函数选择、网络深度),并预告在后续章节中将介绍的解决方案。 第二部分:模型训练的实用技巧与策略 理论是基础,但优秀的模型训练离不开丰富的实践经验和精妙的工程技巧。 第四章:正则化技术:对抗过拟合的利器 我们将系统介绍各种正则化(Regularization)方法,用于抑制模型复杂度,提升泛化能力。 L1和L2正则化:解析它们如何通过对权重施加惩罚来减少模型参数,以及其在特征选择和模型平滑上的作用。 Dropout:详细讲解Dropout的机制,包括其训练和推理阶段的行为,以及不同Dropout比例的选择策略。 Batch Normalization (BN):深入理解BN的原理,包括其对层输出进行归一化的方式,以及它如何加速训练、允许使用更高的学习率并起到一定的正则化效果。我们将探讨BN在不同层(如卷积层、全连接层)的应用以及它可能带来的挑战。 其他正则化方法:简要介绍数据增强(Data Augmentation)、早停(Early Stopping)等辅助性正则化技术。 第五章:学习率调度:优化训练过程的艺术 我们将探讨学习率调度(Learning Rate Scheduling)的重要性,即如何在训练过程中动态调整学习率以期获得更好的收敛效果。 介绍常用的学习率调度策略,如步长衰减(Step Decay)、指数衰减(Exponential Decay)、余弦退火(Cosine Annealing),并分析它们的数学原理和适用场景。 深入讨论学习率预热(Learning Rate Warmup)的机制及其在训练早期防止模型不稳定的作用。 分析周期性学习率(Cyclical Learning Rates)等更先进的策略,以及它们如何帮助模型在鞍点和局部最优处探索。 第六章:模型初始化与激活函数选择 模型初始化(Weight Initialization):讲解为何初始化如此重要,并详细介绍Xavier(Glorot)初始化、He初始化等经典初始化方法,分析它们如何缓解梯度消失/爆炸问题。 激活函数(Activation Functions):回顾Sigmoid、Tanh等经典激活函数,重点分析ReLU系列激活函数(ReLU, Leaky ReLU, PReLU, ELU)的优势,以及它们在不同网络结构和任务中的表现。我们将讨论其选择的考量因素。 第七章:批量与数据处理 批量大小(Batch Size):深入分析批量大小对模型训练的影响,包括收敛速度、内存消耗、泛化能力以及梯度噪声。我们将讨论如何选择合适的批量大小,以及梯度累积(Gradient Accumulation)等技术如何模拟大批量训练。 数据预处理与增强:虽然不是模型训练本身,但良好的数据预处理和数据增强是模型能够成功训练的前提。我们将简要介绍常见的预处理技术(归一化、标准化)以及在图像、文本等领域常用的数据增强方法。 第三部分:进阶训练策略与模型评估 在掌握了基础的训练技巧后,我们将触及更高级的话题,并关注如何科学地评估模型的训练效果。 第八章:超参数调优 我们将介绍超参数(Hyperparameters)的概念,以及它们与模型参数的区别。 详细讲解多种超参数搜索策略:网格搜索(Grid Search)、随机搜索(Random Search)。 重点介绍更高效的贝叶斯优化(Bayesian Optimization)、超额梯度下降(Hyperband)等高级超参数调优方法。 讨论学习率寻找器(Learning Rate Finder)等工具在实践中的应用。 第九章:模型评估与诊断 评估指标:根据不同的任务类型(分类、回归、目标检测、自然语言处理等),深入讲解各种评估指标(Accuracy, Precision, Recall, F1-score, ROC AUC, IoU, BLEU, ROUGE等)的计算方式、含义以及适用场景。 学习曲线(Learning Curves):通过绘制训练集和验证集上的损失和准确率曲线,来诊断模型是否存在过拟合或欠拟合。 混淆矩阵(Confusion Matrix):如何通过混淆矩阵深入理解模型的分类错误模式。 模型诊断工具:介绍TensorBoard、Weights & Biases等可视化工具在模型训练监控、性能分析和调试中的强大功能。 第十章:迁移学习与模型微调 迁移学习(Transfer Learning):解释迁移学习的原理,即如何利用在大规模数据集上预训练好的模型(如ImageNet上的ResNet、BERT等)来加速和改进在小规模、特定任务上的模型训练。 模型微调(Fine-tuning):详细讲解如何对预训练模型进行微调,包括解冻部分层、调整学习率、替换分类头等具体操作。 分析不同迁移学习策略(特征提取 vs. 微调)的适用性。 第十一章:训练技巧与陷阱 长程依赖问题:讨论在RNN、LSTM等序列模型中处理长距离依赖的挑战,以及如何通过门控机制等来缓解。 多任务学习:探讨如何训练一个模型同时解决多个相关任务,以及其潜在的协同效应。 对抗性攻击与防御:简要介绍对抗性样本及其对模型鲁棒性的影响,以及相关的防御策略。 本书的读者对象 本书的目标读者为: 对深度学习模型训练有深入学习需求的机器学习工程师和数据科学家。 希望提升模型性能、解决实际工程问题的AI研究人员。 已经具备一定编程基础(例如Python),并对神经网络有初步了解,但希望系统掌握模型训练过程的学生或技术爱好者。 对深度学习模型内部工作机制充满好奇,希望超越API调用的技术开发者。 结语 深度学习模型训练是一门既有深度又有广度的学问。本书致力于为您搭建一座坚实的桥梁,从理论的深度挖掘到实践的精细打磨,帮助您掌握这门“艺术”。我们相信,通过对本书内容的深入学习和实践,您将能够更自信、更高效地驾驭深度学习模型,解锁更多智能应用的可能性。