机器学习:Go语言实现
书籍作者:丹尼尔·怀特纳克 |
ISBN:9787111609797 |
书籍语言:简体中文 |
连载状态:全集 |
电子书格式:pdf,txt,epub,mobi,azw3 |
下载次数:5547 |
创建日期:2021-02-14 |
发布日期:2021-02-14 |
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板 |
内容简介
本书不仅清楚地介绍了在Go世界中机器学习的技术和编程方面的内容,还有助于读者理解现实分析工作中合理的工作流程和理念。本书的第1章~第3章讲述了在机器学习流程中如何准备和分析数据;第4章~第7章详细介绍了机器学习的技术;第8章和第9章对机器学习进行了深入探究;附录介绍了与机器学习相关的算法/技术。本书适合作为对Go感兴趣的数据科学家、分析师、工程师和相关专业学生的参考书。
前言
在位于科技前沿的公司以及越来越多的大型企业中,机器学习和人工智能似乎都风靡一时。数据科学家正在尝试使用机器学习来完成任何事情,从驾驶汽车到画猫。但是,如果关注数据科学界的动态,很可能会看到类似于Python和R用户之间的语言战争。这些语言在机器学习交流中占据主导地位,而且往往被当成将机器学习集成到组织中的唯一选择。本书中将探索第3个选项:由Google创造的开源编程语言,Go。
Go的独特功能以及Go程序员的思维方式,可以帮助数据科学家克服他们遇到的一些常见困难。尤其是数据科学家(很不幸地)被公认为会产生糟糕、低效和不易维护的代码。本书将解决这个问题,并将清楚地阐明,如何在机器学习方面富有成效,同时还能生产出保持高级别完整性的应用程序。书中还会帮助读者应对在现有工程学组织中有关完整性分析和机器学习代码的常见挑战。
本书将使读者成为富有成效的、有创新精神的数据分析师,帮助读者利用Go来构建强大而有价值的应用程序。为此,本书会清楚地介绍在Go世界中机器学习的技术和编程方面的内容,同时也将指导读者理解现实分析工作中合理的工作流程和理念。
本书内容
在机器学习流程中准备和分析数据:
第1章,数据的收集和组织,包含了收集、组织和解析数据,这些数据来自本地和远端,或者需要保存到本地和远端。阅读完本章,读者会理解如何与存储在多个位置、不同格式的数据做交互,如何解析和清洗数据,如何输出清洗过、解析过的数据。
第2章,矩阵、概率论和统计学,涵盖了将数据组织成矩阵和矩阵运算。阅读完本章,读者将了解如何在Go程序中生成矩阵,以及如何利用这些矩阵执行各种类型的矩阵运算。本章会介绍统计度量和日常数据分析工作的操作关键。读者读完本章之后,还将了解如何执行可靠的汇总数据分析、描述和可视化分布、量化假设以及转换数据集(例如降维)。
第3章,评估和验证,本章主要介绍评估和验证,评估和验证是衡量机器应用性能和确保其通用化的关键。一旦读者完成本章,将会了解评估模型性能的各种度量指标,以及各种用以更通用地验证模型的技术。
机器学习的技术:
第4章,回归,本章解释了回归是一种广泛使用的连续变量建模技术,同时也是其他模型的基础。回归生成能立刻解释的模型。因此当开始在机构中引入预测功能时,回归可以提供一个很好的起点。
第5章,分类,分类作为一种与回归不同的机器学习技术,其目标变量通常是分类的或标记的。例如,分类模型可以将电子邮件分类为垃圾邮件或者非垃圾邮件,或者将网络数据分类为欺诈性或非欺诈性的数据等。
第6章,集群,集群是一种用于形成样本分组的无监督机器学习技术。在本章的最后,读者将能够自动形成数据点的分组,用以更好地理解其结构。
第7章,时间序列和异常检测,本章介绍了用于对时间序列数据进行建模的技术,如股票价格、用户事件等。阅读本章后,读者将会理解如何评估时间序列中的各种术语,建立时间序列模型,并检测时间序列中的异常情况。
机器学习探究:
第8章,神经网络和深度学习,介绍了利用神经网络进行回归、分类和图像处理的技术。阅读本章之后,读者将了解如何以及何时应用这些更复杂的建模技术。
第9章,部署、分布分析和模型,使读者能够将整个课程中开发的模型应用部署到生产环境,并对生产规模数据进行分布处理。本章说明了如何利用本书使用的现有代码轻松完成这两件事情,而不用对代码进行重大修改。
附录,与机器学习相关的算法/技术,会在本书全书中被引用,并且将提供与机器学习工作流程相关的算法、优化和技术的信息。
阅读本书需要的准备
为了运行本书中的示例并尝试使用本书中涵盖的技术,通常需要以下内容:
可以访问一个类似bash的shell。
一个完整的Go环境,包括Go、一个编辑器以及相关的默认或定制的环境变量。例如,可以按照在https://www.goinggo.net/2016/05/installing-go-and-your-workspace.html上的指南进行操作。
各种Go的依赖包。这些可以通过命令go get得到。
然后,为了运行与一些高级的机器学习主题(如数据流水线和深度学习)相关的示例,需要准备一些额外的内容:
需要安装或部署Pachyderm。可以按照链接中的文档来获取Pachyderm,并在本地或在云上运行:http://pachyderm.readthedocs.io/en/latest/。
一个可运行的Docker(https://www.docker.com/community-edition#/download)。
安装一个TensorFlow。要在本地安装TensorFlow,可以在https://www.tensor-flow.org/install/上阅读安装指南。
谁适合读本书
本书对于以下类型的读者会有所帮助:
1.对机器学习和数据分析感兴趣的Go程序员
2.对Go感兴趣的数据科学家/分析师/工程师,并希望将其整合到他们的机器学习和数据分析工作流程中
约定
许多Go代码片段不包括package main和func main(){}主函数。除非特别说明,Go代码片段都是在一个必要的基础架构中编译。在本书中将假定代码示例被编译在一个叫做myprogram的目录中,因此会被编译为一个名为myprogram的二进制文件。然而,读者将认识到,代码可以被复制到GOPATH/src目录下的任何文件夹中。
目录
译者序
前言
第1章 数据的收集和组织1
1.1 数据处理-Gopher方式2
1.2 Go语言收集和组织数据的最佳实践4
1.3 CSV文件5
1.3.1 从文件中读取CSV数据5
1.3.2 处理非预期的域6
1.3.3 处理非预期的类型7
1.3.4 用数据帧操作CSV数据9
1.4 JSON11
1.4.1 JSON的解析11
1.4.2 JSON的输出14
1.5 SQL-like数据库14
1.5.1 连接到一个SQL数据库15
1.5.2 查询数据库15
1.5.3 修改数据库17
1.6 缓存17
1.6.1 在内存中缓存数据17
1.6.2 在本地磁盘中缓存数据18
1.7 数据版本控制19
1.7.1 Pachyderm术语20
1.7.2 部署/安装Pachyderm20
1.7.3 创建用于数据版本控制的数据仓库21
1.7.4 把数据存储到数据仓库中21
1.7.5 从版本化的数据仓库中获取数据22
1.8 参考书目22
1.9 小结23
第2章 矩阵、概率论和统计学24
2.1 矩阵和向量24
2.1.1 向量24
2.1.2 向量操作25
2.1.3 矩阵26
2.1.4 矩阵操作27
2.2 统计学29
2.2.1 分布29
2.2.2 统计方法30
2.2.3 分布可视化34
2.3 概率论39
2.3.1 随机变量40
2.3.2 概率测量40
2.3.3 独立和条件概率40
2.3.4 假设检验41
2.4 参考书目43
2.5 小结44
第3章 评估和验证45
3.1 评估45
3.1.1 连续指标46
3.1.2 分类指标49
3.2 验证55
3.2.1 训练和测试集56
3.2.2 保留集59
3.2.3 交叉验证60
3.3 参考书目61
3.4 小结62
第4章 回归63
4.1 理解回归模型的术语63
4.2 线性回归64
4.2.1 线性回归概述64
4.2.2 线性回归假设和陷阱66
4.2.3 线性回归示例66
4.3 多元线性回归78
4.4 非线性和其他类型的回归81
4.5 参考书目85
4.6 小结86
第5章 分类87
5.1 理解分类模型的术语87
5.2 逻辑回归88
5.2.1 逻辑回归概述88
5.2.2 逻辑回归的假设和陷阱91
5.2.3 逻辑回归示例92
5.3 k-最近邻103
5.3.1 kNN概述103
5.3.2 kNN假设和陷阱104
5.3.3 kNN示例105
5.4 决策树和随机森林106
5.4.1 决策树和随机森林概述107
5.4.2 决策树和随机森林的假设及陷阱107
5.4.3 决策树示例108
5.4.4 随机森林的例子109
5.5 朴素贝叶斯109
5.5.1 朴素贝叶斯概念及其重要假设110
5.5.2 朴素贝叶斯例子110
5.6 参考书目111
5.7 小结112
第6章 集群113
6.1 理解集群模型术语113
6.2 距离或相似度的度量114
6.3 集群技术的评估115
6.3.1 内部集群评估115
6.3.2 外部集群评估120
6.4 k-均值集群120
6.4.1 k-均值集群综述120
6.4.2 k-均值的假设和陷阱122
6.4.3 k-均值集群的例子123
6.5 其他集群技术129
6.6 参考书目130
6.7 小结130
第7章 时间序列和异常检测131
7.1 在Go中表示时序数据131
7.2 理解时间序列的术语134
7.3 与时间序列有关的统计135
7.3.1 自相关135
7.3.2 偏自相关139
7.4 预测的自回归模型141
7.4.1 自回归模型概述141
7.4.2 自回归模型假设和陷阱142
7.4.3 自回归模型示例142
7.5 自回归移动平均和其他时间序列模型151
7.6 异常检测151
7.7 参考书目153
7.8 小结154
第8章 神经网络和深度学习155
8.1 理解神经网络术语155
8.2 构建一个简单的神经网络157
8.2.1 网络中的节点157
8.2.2 网络架构158
8.2.3 为什么期望这种架构有作用159
8.2.4 训练神经网络160
8.3 使用简单的神经网络165
8.3.1 在实际数据上训练神经网络166
8.3.2 评估神经网络168
8.4 引入深度学习169
8.4.1 什么是深度学习模型170
8.4.2 基于Go语言的深度学习171
8.5 参考书目177
8.6 小结178
第9章 部署、分布分析和模型179
9.1 在远程机器上可靠地运行模型179
9.1.1 Docker和Docker术语简介180
9.1.2 Docker化机器学习的应用181
9.2 构建可拓展和可重现的机器学习流水线191
9.2.1 搭建Pachyderm和Kubernetes集群192
9.2.2 构建一个Pachyderm机器学习流水线193
9.2.3 更新流水线并检查出处202
9.2.4 缩放流水线阶段204
9.3 参考书目206
9.4 小结206
附录 与机器学习相关的算法/技术207