程序员必会的种算法
更新日期:2024-07-11 00:59:58
书店:机械工业出版社自营官方旗舰店
出版时间:2021-09
浏览量:1058
价格:0.0¥

书籍下载

内容介绍

产品特色

编辑推荐

适读人群 :所有程序员

算法一直在计算科学和计算实践中发挥着重要作用。除了传统计算之外,使用算法解决现实问题的能力是开发人员和程序员必须具备的一项重要技能。
本书带你了解各种算法设计技术,通过实例探索如何实现不同类型的算法。知识点众多但简单易学,专为初学者准备——忽略对算法细节的讨论,仅给出每个算法的思想和原理,将重点放在如何用Python进行算法实现和算法性能的比较与分析上。读者通过学习本书,可以迅速了解算法的概念,掌握如何用开源包实现各种算法,并理解它们的性能、应用领域和局限性,进而对算法在计算机科学和各种应用领域中的作用有整体了解。


内容简介

本书致力于利用算法求解实际问题,分为三部分。第一部分介绍算法的核心内容,探讨什么是算法、如何设计算法,同时学习在算法中使用的数据结构,还深入讲解排序算法、查找算法和求解图问题的算法。第二部分讨论各种机器学习算法,包括无监督机器学习算法和传统监督学习算法,详细讨论一些自然语言处理算法,以及推荐引擎。第三部分讨论更高级的算法,重点讨论密码算法和大规模算法,还探讨在算法实现时应该考虑的实际因素。此外,本书还包含一些案例分析(如天气预测、推文聚类和电影推荐引擎),用来说明如何才能最佳地应用这些算法。


作者简介

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


目录

译者序
前言
关于作者
关于审校者
第一部分 基础与核心算法
第1章 算法概述2
11 什么是算法2
12 描述算法逻辑4
121 理解伪代码4
122 使用代码片段6
123 制定执行计划6
13 Python包简介7
131 Python包8
132 通过Jupyter Notebook执行Python9
14 算法设计技术10
141 数据维度11
142 计算维度12
15 性能分析13
151 空间复杂度分析13
152 时间复杂度分析14
153 性能评估14
154 选择算法15
155 大O记号15
16 验证算法19
161 精确算法、近似算法和随机算法19
162 可解释性20
17 小结20
第2章 算法中的数据结构21
21 Python中的数据结构21
211 列表22
212 元组26
213 字典27
214 集合28
215 数据帧30
216 矩阵32
22 抽象数据类型33
221 向量33
222 栈34
223 队列36
224 栈和队列背后的基本思想37
225 树38
23 小结40
第3章 排序算法和查找算法41
31 排序算法简介41
311 在Python中交换变量42
312 冒泡排序42
313 插入排序44
314 归并排序46
315 希尔排序48
316 选择排序50
32 查找算法简介51
321 线性查找52
322 二分查找52
323 插值查找53
33 实际应用54
34 小结56
第4章 算法设计57
41 算法设计基本概念57
411 第一点—所设计算法是否能产生预期的结果58
412 第二点—所设计算法是否是获取结果的最佳方法58
413 第三点—所设计算法在更大的数据集上表现如何61
42 理解算法策略61
421 分治策略62
422 动态规划策略64
423 贪心算法64
43 实际应用—求解TSP65
431 使用蛮力策略66
432 使用贪心算法68
44 PageRank算法70
441 问题定义70
442 实现PageRank算法70
45 了解线性规划73
46 实例—用线性规划实现产量规划73
47 小结76
第5章 图算法77
51 图的表示77
511 图的类型79
512 特殊类型的边81
513 自我中心网络82
514 社交网络分析82
52 网络分析理论简介83
521 理解最短路径83
522 创建邻域84
523 理解中心性度量85
524 用Python计算中心性指标87
53 理解图的遍历88
531 广度优先搜索89
532 深度优先搜索92
54 实例—欺诈分析93
541 进行简单的欺诈分析96
542 瞭望塔欺诈分析法97
55 小结99
第二部分 机器学习算法
第6章 无监督机器学习算法102
61 无监督学习简介102
611 数据挖掘生命周期中的无监督学习103
612 无监督学习的当前研究趋势105
613 实例106
62 理解聚类算法107
621 量化相似性107
622 分层聚类113
623 评估聚类效果115
624 聚类算法的应用115
63 降维116
631 主成分分析116
632 主成分分析的局限性118
64 关联规则挖掘119
641 实例119
642 市场购物篮分析119
643 关联规则120
644 排序规则122
645 关联分析算法123
65 实例—聚类相似推文127
651 主题建模128
652 聚类128
66 异常检测算法129
661 基于聚类的异常检测129
662 基于密度的异常检测129
663 基于支持向量机的异常检测129
67 小结130
第7章 传统监督学习算法131
71 理解监督机器学习131
711 描述监督机器学习132
712 理解使能条件134
713 区分分类器和回归器134
72 理解分类算法135
721 分类器挑战性问题135
722 评估分类器139
723 分类器的各个阶段142
724 决策树分类算法143
725 理解集成方法146
726 逻辑回归149
727 支持向量机算法151
728 理解朴素贝叶斯算法153
729 各种分类算法的胜者156
73 理解回归算法156
731 回归器挑战性问题156
732 线性回归158
733 回归树算法162
734 梯度提升回归算法163
735 各种回归算法的胜者163
74 实例—预测天气164
75 小结166
第8章 神经网络算法167
81 理解人工神经网络168
82 人工神经网络的演化169
83 训练神经网络171
831 解析神经网络结构171
832 定义梯度下降172
833 激活函数173
84 工具和框架178
841 Keras178
842 理解TensorFlow181
843 理解神经网络的类型183
85 迁移学习185
86 实例—用深度学习实现欺诈检测186
87 小结189
第9章 自然语言处理算法190
91 自然语言处理简介190

前言/序言

算法一直在计算科学和计算实践中发挥着重要作用。本书致力于利用算法求解实际问题。为了最大限度地利用算法,必须深入理解算法背后的逻辑和数学知识。我们先概要地介绍算法,并探索各种算法设计技术。接下来,学习线性规划算法、PageRank算法、图算法以及机器学习算法。本书还包含一些案例(如天气预测、推文聚类和电影推荐引擎),用来说明如何才能最佳地应用这些算法。通过学习本书,你将对使用算法求解实际计算问题充满信心。
读者对象
本书为程序员而写!无论你是希望深刻理解算法背后的数学知识的经验丰富的程序员,还是希望了解如何利用经过实践检验的算法来改进代码设计和编写方式的经验不足的程序员,阅读本书都大有裨益。在阅读本书前必须具有Python编程经验,数据科学知识对阅读本书有帮助,但不是必需的。
本书内容
第1章概述算法基础。11节介绍理解不同算法如何工作所需的基本概念,概述人们最初如何用算法以数学的形式表达特定类型的问题,还提到不同算法的局限性。12节讲述描述算法逻辑的各种方法。由于本书用 Python编写算法,13节说明如何设置环境以运行书中给出的例子。14节介绍算法设计技术。15节讨论如何用不同方法量化算法性能,并与其他算法进行比较。16节讨论验证算法的特定实现的各种方法。
第2章着重讲述算法中用于存储临时数据的内存数据结构。算法可能是数据密集型的,也可能是计算密集型的,或者既是数据密集型的又是计算密集型的。对于所有不同类型的算法,选择恰当的数据结构对其最佳实现而言至关重要。许多算法具有递归和迭代逻辑,因而需要面向这种本征逻辑的专用数据结构。由于本书用 Python编写算法,这一章主要关注实现书中算法所需的 Python 数据结构。
第3章给出用于排序和查找的核心算法。这些算法在后面将作为其他更复杂算法的基础。本章先讲述不同类型的排序算法,包括各种算法的性能比较。然后,讲述各种查找算法,量化这些算法的性能和复杂度,并进行比较。最后,讲述这些算法的实际应用。
第4章讲述设计各种算法所需的核心概念,阐述各种算法并讨论它们的优缺点。理解这些概念对设计最优的复杂算法而言至关重要。这一章先讨论不同类型的算法设计,然后求解著名的旅行商问题。之后讨论线性规划及其局限性。最后,用实例展示如何用线性规划进行产量规划。
第5章着重讲述常见于计算机科学中的图算法。图是许多计算问题的最佳模型。本章讲述表示和搜索图的各种方法。搜索图意味着用系统化的方法沿图中的边访问图中的顶点。图搜索算法可以发现图的很多结构。很多算法都通过在输入图上执行搜索算法来获得结构信息。其他几个图算法都是基本图搜索算法的细化。图的搜索技术是图算法领域的核心。该章首先讨论图的两种常见的计算表示:邻接表和邻接矩阵。接下来,讲述广度优先搜索这种简单的图搜索算法,并说明如何创建广度优先搜索树。然后讲述深度优先搜索,并给出深度优先搜索算法访问顶点顺序的标准结论。
第6章讨论无监督机器学习算法。之所以被归类为无监督方法,是由于这些模型或算法在无监督条件下从给定数据中学习固有的结构、模式和关系。我们先讨论聚类方法,这种机器学习方法基于固有的属性或特征,试图从数据集的数据样本中找出相似性模式和关系模式,然后把数据样本划分为集群,使得各个集群内的数据样本具有相似性。接下来,讨论降维算法,该算法用于处理特征较多的问题。之后,讨论关联规则挖掘算法,它们属于数据挖掘方法,用于检查和分析大规模交易数据集,以发现有意义的模式和规则,而这些模式表示了跨交易的各种商品之间有意义的关系和关联。最后,讨论处理异常检测的算法。
第7章描述与一组机器学习问题相关的传统监督机器学习算法。这些问题中的标记数据集具有输入属性和相应的输出标签或类别。这些输入和其相应的输出用于学习一个一般性系统,该系统用于预测不在数据集中的其他数据点的结果。我们先从机器学习的角度概述分类的相关概念。接下来,讨论重要的算法之一—决策树,给出决策树算法的局限性和优势。接着介绍支持向量机和XGBoost这两种重要的算法。最后,讨论线性回归这种最简单的机器学习算法。
第8章首先介绍典型神经网络这种最重要的机器学习技术的主要概念和组成部分。然后介绍各种神经网络,并阐述用于实现这些神经网络的激活函数。之后,详细讨论反向传播算法,这是目前应用最广泛的训练神经网络的收敛算法。接下来,介绍迁移学习技术,它可以大大简化模型训练并部分地使其自动化。最后,给出一个学习实例,讨论如何在现实世界中利用深度学习进行欺诈检测。
第9章介绍自然语言处理算法,从理论到实践循序渐进地展开。首先介绍基础知识,然后讨论背后的数学知识。接下来,介绍一种流行的神经网络,它广泛应用于设计和实现文本数据上的重要用例。此外,还介绍自然语言处理算法的局限性。最后,给出一个案例,讨论如何在自然语言处理领域训练机器学习模型,以进行电影评论情感分析。
第10章重点讨论推荐引擎,它先用与用户偏好相关的信息建立模型,然后基于模型和信息向