原书前言
Go语言是一种针对机器学习的良好编程语言。其语法简单,有助于清晰描述复杂算法,同时又不至于使得开发人员无法理解如何运行高效的优化代码。本书旨在阐述如何在Go语言中实现机器学习,使程序易于部署,代码易于理解和调试,同时还可进行性能测试。
本书首先介绍如何利用Go语言的库文件和功能来配置机器学习的环境。然后,进行了实际房价数据集的回归分析,并在Go语言中构建了分类模型,将电子邮件分类为垃圾邮件 或正常邮件。利用Gonum、Gorgonia和STL进行时间序列分析和分解,以及通过聚类来整理 个人推特账户的时间线。除此之外,还介绍了如何利用神经网络和卷积神经网络进行手写体 识别,这两种神经网络都属于深度学习技术。在掌握了上述所有技术的基础上,将在人脸检测项目的帮助下介绍了如何在具体项目中选择最佳的机器学习算法。
在本书最后,你将树立一种坚实的机器学习思想,牢固掌握Go语言中功能强大的库文件,并对实际项目中机器学习算法的具体实现有深刻理解。
本书读者如果你是一名机器学习工程人员,数据科学专业人员,或是一名想在实际项目中实现机器学习,想更容易实现更加智能的应用程序的Go语言程序员,那么本书就非常适合你。
本书主要内容
第1章“如何解决机器学习中的所有问题”,介绍了两类机器学习:回归和分类。在该章结束时,你能够对用于构建机器学习程序的数据结构感到得心应手。大多数机器学习算法 都是基于在此介绍的数据结构而构建的。接下来,将介绍Go语言机器学习,并启动和运行 进一步的项目。
第2章“线性回归———房价预测”,对实际房价数据集进行回归分析。在此将首先构建必要的数据结构来进行上述分析,并对数据集的初步探索。
第3章“分类———垃圾邮件检测”,包括在Go语言中构建一个分类模型。数据集是典型 的垃圾邮件和正常邮件,目标是构建一个能将电子邮件分类为垃圾邮件或正常邮件的模型。然后,介绍如何自行编写算法,同时利用外部库(如Gonum)来支持数据结构。
第4章“利用时间序列分析分解二氧化碳趋势”,该章体现了时间序列分析的独特作用。时间序列中的数据通常可根据不同的描述目的进行分解。该章展示了如何执行这种分解,以 及如何利用Gonum绘图工具和gnuplot来进行显示。
第5章“通过聚类整理个人推特账户的时间线”,包括推特上的聚类分析。该章使用了 两种不同的聚类方法———K均值和DBSCAN。在该章中,将利用在第2章中所积累的一些技 巧。另外,还将采用第4章中所用的相同库文件。除此之外,还使用了Marcin Praski聚类库。
第6章“神经网络———MNIST手写体识别”,开启了图像识别的新领域。由于有用特征是输入特征的非线性积,因此图像处理相对较难。该项目的目的是介绍各种高维数据的处理方法,尤其是在Gonum库中用PCA算法来清洗数据。
第7章“卷积神经网络———MNIST手写体识别”,阐述了如何利用深度学习的最新进展来进行手写体识别,并通过利用Gorgonia构建卷积神经网络,从而实现了99.87%的准确率。
第8章“基本人脸检测”,介绍了人脸检测的一种基本实现。在该章结束时,将能够利用GoCV和PIGO实现一个可用的人脸检测系统。该章为学习如何在工作中选择一种正确算法打下了重要基础。
第9章“热狗或非热狗———采用外部服务”,展示了如何将外部服务集成到机器学习项目中以及需要关注的注意事项。
第10章“今后发展趋势”,列出了在Go语言中进行机器学习所需的下一步发展途径。