在位于科技前沿的公司以及越来越多的大型企业中,机器学习和人工智能似乎都风靡一时。数据科学家正在尝试使用机器学习来完成任何事情,从驾驶汽车到画猫。但是,如果关注数据科学界的动态,很可能会看到类似于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目录下的任何文件夹中。
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目录下的任何文件夹中。