【新书速递】程序员必会的40种算法

【新书速递】程序员必会的40种算法_第1张图片

算法是计算科学的核心,在求解实际问题的过程中发挥着重要作用。程序员、算法设计师、架构师、数据分析师等信息技术相关从业人员都应学习算法设计基础知识,积累基础算法,掌握典型的机器学习算法、自然语言处理算法、推荐算法、大规模数据处理算法、密码算法等,理解这些算法在求解实际问题时的优势和局限性并在实践中合理处理相关约束因素。然而,学习和掌握这些知识是一个循序渐进的漫长过程。对于初学者,重要的是在学习程序设计技术的同时,快速了解算法在计算机科学和实践应用中的整体概貌,奠定系统观基础并增强使用算法来求解实际计算问题的信心。

【新书速递】程序员必会的40种算法_第2张图片

《程序员必会的40种算法》

作者:[加] 伊姆兰·艾哈迈德(Imran Ahmad)

译者:赵海霞

本书是工业界给出的达成上述目标的一个解决方案,致力于利用算法求解实际问题,帮助初学者理解算法背后的逻辑和数学知识,以便最大限度地利用算法。本书概要地讨论算法基础、设计技术、分析方法、排序算法、查找算法、图算法、线性规划算法、机器学习算法、推荐算法、数据算法、密码算法和大规模算法等内容,在讲述方式上忽略对算法细节的讨论,仅给出每个算法的思想和原理,将重点放在如何用Python进行算法实现和算法性能的比较与分析上。读者通过学习本书,可以迅速了解算法的概念,掌握如何用开源包实现各种算法,并理解它们的性能、应用领域和局限性,进而对算法在计算机科学和各种应用领域中的作用有整体了解。本书还包含一些案例(如天气预测、推文聚类和电影推荐引擎),用来说明如何才能最佳地应用这些算法。通过学习本书,你将对使用算法求解实际计算问题充满信心。

读者对象

本书为程序员而写!无论你是希望深刻理解算法背后的数学知识的经验丰富的程序员,还是希望了解如何利用经过实践检验的算法来改进代码设计和编写方式的经验不足的程序员,阅读本书都大有裨益。在阅读本书前必须具有Python编程经验,数据科学知识对阅读本书有帮助,但不是必需的。

本书内容

本书致力于利用算法求解实际问题,分为三部分。

第一部分介绍算法的核心内容,探讨什么是算法、如何设计算法,同时学习在算法中使用的数据结构,还深入讲解排序算法、查找算法和求解图问题的算法。

第二部分讨论各种机器学习算法,包括无监督机器学习算法和传统监督学习算法,详细讨论一些自然语言处理算法,以及推荐引擎。

第三部分讨论更高级的算法,重点讨论密码算法和大规模算法,还探讨在算法实现时应该考虑的实际因素。此外,本书还包含一些案例分析(如天气预测、推文聚类和电影推荐引擎),用来说明如何才能最佳地应用这些算法。

【新书速递】程序员必会的40种算法_第3张图片

通过阅读本书,你将

  • 探索Python库中的数据结构和算法。

  • 利用网络分析实现欺诈检测的图算法。

  • 使用机器学习算法对类似推文进行聚类,实时处理推文数据。

  • 使用监督学习算法预测天气。

  • 使用孪生神经网络进行独热图像识别。

  • 创建向订阅者推荐相关电影的推荐引擎。

  • 在部署机器学习模型时,使用对称和非对称加密实现可靠的安全。

关于作者  About the Author

伊姆兰·艾哈迈德(Imran Ahmad)是一名经过认证的谷歌讲师,多年来一直在谷歌和学习树(Learning Tree)任教,主要教授Python、机器学习、算法、大数据和深度学习。他在攻读博士学位期间基于线性规划方法提出了名为ATSRA的新算法,用于云计算环境中资源的优化分配。近4年来,他一直在加拿大联邦政府的高级分析实验室参与一个备受关注的机器学习项目,该项目旨在开发机器学习算法,使移民过程自动化。他目前正致力于开发最优地使用GPU来训练复杂的机器学习模型的算法。

About the reviewer  关于审校者

本杰明·巴卡(Benjamin Baka)是一名全栈软件开发人员,热衷于前沿技术和优雅的编程技术,在C++、Java、Ruby、Python和Qt等方面拥有10年以上的经验,目前开展的一些项目可以在其GitHub主页上找到。他目前正在为mPedigree做技术开发工作。

目录

译者序

前言

关于作者

关于审校者

第一部分 基础与核心算法

第1章 算法概述2

1.1 什么是算法2

1.2 描述算法逻辑4

1.2.1 理解伪代码4

1.2.2 使用代码片段6

1.2.3 制定执行计划6

1.3Python包简介7

1.3.1Python包8

1.3.2 通过Jupyter Notebook执行Python9

1.4 算法设计技术10

1.4.1 数据维度11

1.4.2 计算维度12

1.5 性能分析13

1.5.1 空间复杂度分析13

1.5.2 时间复杂度分析14

1.5.3 性能评估14

1.5.4 选择算法15

1.5.5 大O记号15

1.6 验证算法19

1.6.1 精确算法、近似算法和随机算法19

1.6.2 可解释性20

1.7 小结20

第2章 算法中的数据结构21

2.1Python中的数据结构21

2.1.1 列表22

2.1.2 元组26

2.1.3 字典27

2.1.4 集合28

2.1.5 数据帧30

2.1.6 矩阵32

2.2 抽象数据类型33

2.2.1 向量33

2.2.2 栈34

2.2.3 队列36

2.2.4 栈和队列背后的基本思想37

2.2.5 树38

2.3 小结40

第3章 排序算法和查找算法41

3.1 排序算法简介41

3.1.1 在Python中交换变量42

3.1.2 冒泡排序42

3.1.3 插入排序44

3.1.4 归并排序46

3.1.5 希尔排序48

3.1.6 选择排序50

3.2 查找算法简介51

3.2.1 线性查找52

3.2.2 二分查找52

3.2.3 插值查找53

3.3 实际应用54

3.4 小结56

第4章 算法设计57

4.1 算法设计基本概念57

4.1.1 第一点—所设计算法是否能产生预期的结果58

4.1.2 第二点—所设计算法是否是获取结果的最佳方法58

4.1.3 第三点—所设计算法在更大的数据集上表现如何61

4.2 理解算法策略61

4.2.1 分治策略62

4.2.2 动态规划策略64

4.2.3 贪心算法64

4.3 实际应用—求解TSP65

4.3.1 使用蛮力策略66

4.3.2 使用贪心算法68

4.4PageRank算法70

4.4.1 问题定义70

4.4.2 实现PageRank算法70

4.5 了解线性规划73

4.6 实例—用线性规划实现产量规划73

4.7 小结76

第5章 图算法77

5.1 图的表示77

5.1.1 图的类型79

5.1.2 特殊类型的边81

5.1.3 自我中心网络82

5.1.4 社交网络分析82

5.2 网络分析理论简介83

5.2.1 理解最短路径83

5.2.2 创建邻域84

5.2.3 理解中心性度量85

5.2.4 用Python计算中心性指标87

5.3 理解图的遍历88

5.3.1 广度优先搜索89

5.3.2 深度优先搜索92

5.4 实例—欺诈分析93

5.4.1 进行简单的欺诈分析96

5.4.2 瞭望塔欺诈分析法97

5.5 小结99

第二部分 机器学习算法

第6章 无监督机器学习算法102

6.1 无监督学习简介102

6.1.1 数据挖掘生命周期中的无监督学习103

6.1.2 无监督学习的当前研究趋势105

6.1.3 实例106

6.2 理解聚类算法107

6.2.1 量化相似性107

6.2.2 分层聚类113

6.2.3 评估聚类效果115

6.2.4 聚类算法的应用115

6.3 降维116

6.3.1 主成分分析116

6.3.2 主成分分析的局限性118

6.4 关联规则挖掘119

6.4.1 实例119

6.4.2 市场购物篮分析119

6.4.3 关联规则120

6.4.4 排序规则122

6.4.5 关联分析算法123

6.5 实例—聚类相似推文127

6.5.1 主题建模128

6.5.2 聚类128

6.6 异常检测算法129

6.6.1 基于聚类的异常检测129

6.6.2 基于密度的异常检测129

6.6.3 基于支持向量机的异常检测129

6.7 小结130

第7章 传统监督学习算法131

7.1 理解监督机器学习131

7.1.1 描述监督机器学习132

7.1.2 理解使能条件134

7.1.3 区分分类器和回归器134

7.2 理解分类算法135

7.2.1 分类器挑战性问题135

7.2.2 评估分类器139

7.2.3 分类器的各个阶段142

7.2.4 决策树分类算法143

7.2.5 理解集成方法146

7.2.6 逻辑回归149

7.2.7 支持向量机算法151

7.2.8 理解朴素贝叶斯算法153

7.2.9 各种分类算法的胜者156

7.3 理解回归算法156

7.3.1 回归器挑战性问题156

7.3.2 线性回归158

7.3.3 回归树算法162

7.3.4 梯度提升回归算法163

7.3.5 各种回归算法的胜者163

7.4 实例—预测天气164

7.5 小结166

第8章 神经网络算法167

8.1 理解人工神经网络168

8.2 人工神经网络的演化169

8.3 训练神经网络171

8.3.1 解析神经网络结构171

8.3.2 定义梯度下降172

8.3.3 激活函数173

8.4 工具和框架178

8.4.1Keras178

8.4.2 理解TensorFlow181

8.4.3 理解神经网络的类型183

8.5 迁移学习185

8.6 实例—用深度学习实现欺诈检测186

8.7 小结189

第9章 自然语言处理算法190

9.1 自然语言处理简介190

9.1.1 理解自然语言处理术语191

9.1.2 自然语言工具包192

9.2 基于词袋的自然语言处理193

9.3 词嵌入简介195

9.3.1 词的邻域195

9.3.2 词嵌入的性质195

9.4 用循环神经网络实现自然语言处理196

9.5 用自然语言处理实现情感分析197

9.6 实例—电影评论情感分析198

9.7 小结200

第10章 推荐引擎201

10.1 推荐系统简介201

10.2 推荐引擎的类型202

10.2.1 基于内容的推荐引擎202

10.2.2 协同过滤推荐引擎204

10.2.3 混合推荐引擎205

10.3 理解推荐系统的局限性207

10.3.1 冷启动问题207

10.3.2 元数据需求207

10.3.3 数据稀疏性问题207

10.3.4 由社会影响产生的偏差207

10.3.5 有限的数据207

10.4 实际应用领域208

10.5 实例—创建推荐引擎208

10.6 小结210

第三部分 高 级 主 题

第11章 数据算法212

11.1 数据算法简介212

11.2 数据存储算法简介213

11.3 流数据算法简介216

11.4 数据压缩算法简介216

11.5 实例—推文实时情感分析218

11.6 小结221

第12章 密码算法222

12.1 密码算法简介222

12.1.1 理解最薄弱环节的重要性223

12.1.2 基本术语223

12.1.3 理解安全性需求224

12.1.4 理解密码基本设计225

12.2 理解加密技术类型228

12.2.1 加密哈希函数228

12.2.2 对称加密231

12.2.3 非对称加密233

12.3 实例—机器学习模型部署时的安全问题236

12.3.1MITM攻击236

12.3.2 避免伪装238

12.3.3 数据加密和模型加密238

12.4 小结240

第13章 大规模算法241

13.1 大规模算法简介241

13.1.1 定义精心设计的大规模算法241

13.1.2 术语242

13.2 并行算法设计242

13.2.1 阿姆达尔定律243

13.2.2 任务粒度245

13.2.3 负载均衡246

13.2.4 局部化问题246

13.2.5 在Python中启用并发处理246

13.3 制定多资源处理策略246

13.3.1CUDA简介247

13.3.2 集群计算250

13.3.3 混合策略251

13.4 小结252

第14章 实践中要考虑的要素253

14.1 实践要素简介253

14.2 算法的可解释性254

14.3 理解伦理和算法258

14.3.1 使用学习算法易出现的问题258

14.3.2 理解伦理因素259

14.4 减少模型偏差260

14.5 处理NP难问题261

14.5.1 简化问题261

14.5.2 改造类似问题的已知求解方案261

14.5.3 使用概率方法262

14.6 何时使用算法262

14.7 小结264

上下滑动查看

b4a80a903cec198468c5c1d16a5f5029.gif

【新书速递】程序员必会的40种算法_第4张图片

扫码关注【华章计算机】视频号

每天来听华章哥讲书

53ee396a9ef343c20ef97f1a30226140.gif

更多精彩回顾

书讯 | 10月书讯(下) |  小长假我读这些新书

书讯 | 10月书讯(上) |  小长假我读这些新书

资讯 | 纪念 C语言之父 丹尼斯·里奇 逝世10周年:他发明了计算机世界的钢筋水泥!

书单 | Java、Go、Rust大比拼,高并发时代谁能称雄?

干货 | 索引为什么能提高查询性能....

收藏 | 关于微服务系统中数据一致性的总结

上新 | 【新书速递】流量运营教科书

【新书速递】程序员必会的40种算法_第5张图片

你可能感兴趣的:(算法,大数据,python,机器学习,人工智能)