可充分利用机器学习的14种开源工具

通过一些易于实现的多样化库和框架能够充分挖掘机器学习的预测能力。垃圾邮件过滤,面部识别,推荐引擎等等。当你要对大型数据集执行预测分析或模式识别时,机器学习都是必经之路。

自由开源软件的激增,让机器学习更容易在单机上大规模地通过大多数流行的编程语言实现。以下这些开源工具包括了适用于Python,R,C ++,Java,Scala,Clojure,JavaScript和Go之类的库。

Apache Mahout

Apache Mahout提供了一种构建用于托管机器学习应用程序环境的方法,该环境可以快速有效地扩展来满足需求。

可充分利用机器学习的14种开源工具

Mahout主要与Apache Spark一起工作,最初是为了运行分布式应用程序而设计,可以与Hadoop一起使用,但现在已扩展为与Flink和H2O等其他分布式后端一起使用。

Mahout在Scala中使用了一种域特定语言。版本0.14是对该项目做了主要内部重构,默认基于Apache Spark 2.4.3。

Compose

Compose针对机器学习模型的一个常见问题,即标记原始数据,这可能是一个缓慢而乏味的过程,但没有它,机器学习模型就无法提供有用的结果。

通过Compose,用户可以使用Python为数据编写一组标记功能,因此可以通过编程方式进行标记。可以在数据上设置各种变换和阈值,以简化标记过程。

Core ML Tools

Apple的Core ML框架能够让用户将机器学习模型集成到应用程序中,但使用其自己独特的学习模型格式。但幸运的是,不必以Core ML格式预先训练模型就能使用它们;可以使用Core ML Tools将几乎所有常用的机器学习框架中的模型转换为Core ML。

可充分利用机器学习的14种开源工具

Core ML Tools作为Python包运行,因此与大量的Python机器学习库和工具集成在一起。TensorFlow,PyTorch,Keras,Caffe,ONNX,Scikit-learn,LibSVM和XGBoost的模型都可以转换。神经网络模型还可以通过使用训练后量化来优化大小。

Cortex

Cortex提供了一种方便的方法来使用Python和TensorFlow,PyTorch,Scikit-learn和其他模型提供来自机器学习模型的预测服务。大多数Cortex软件包仅包含几个文件,即你的核心Python逻辑,描述要使用的模型,以及要分配的计算资源类型的cortex.yaml文件,以及用于安装任何所需Python要求的require.txt文件。

整个程序包作为Docker容器部署到AWS或另一个与Docker兼容的托管系统。计算资源的分配方式与在Kubernetes中使用的定义相呼应,因此你可以使用GPU或Amazon Inferentia ASIC加快服务速度。

Featuretools

特征工程或特征创建涉及获取用于训练机器学习模型的数据,并通常手动生成数据的经过转换和聚合的版本,这对于训练模型更为有用。

可充分利用机器学习的14种开源工具

Featuretools为用户提供了通过综合数据帧中的数据而构建的高级Python对象来执行此操作的功能,并且可以针对从一个或多个数据帧中提取的数据执行此操作。Featuretools还为综合操作提供了通用原语(例如,time_since_previous提供带时间戳数据实例之间的时间间隔),因此用户不必自己滚动这些原语。

GoLearn

GoLearn是针对Google Go语言的机器学习库,其创建的目标是简化和可定制性。简单之处在于在库中加载和处理数据的方式,该方式在SciPy和R之后进行了模式化。可定制性在于如何在应用程序中轻松扩展某些数据结构。

可充分利用机器学习的14种开源工具

Gradio

构建机器学习应用程序时的一个常见挑战是为模型训练和预测服务机制构建可靠且易于定制的UI。Gradio提供了用于创建基于Web的UI的工具,这些工具让用户可以与模型进行实时交互。

其中包括几个示例项目,例如Inception V3图像分类器的输入接口或MNIST手写识别模型,让用户对如何在自己的项目中使用Gradio有所了解。

H2O

H2O目前正在进行第三次大修订,它为内存中的机器学习提供了一个完整的平台,从训练到服务预测。H2O的算法适合于业务处理——比如欺诈或趋势预测——而不是图像分析。H2O可以独立地与HDFS store交互,在YARN之上,在MapReduce中,或者直接在Amazon EC2实例中。

可充分利用机器学习的14种开源工具

Hadoop专家可以使用Java与H2O进行交互,但是该框架还提供了针对Python,R和Scala的绑定,从而让用户也可以与这些平台上可用的所有库进行交互。还可以使用REST调用,将H2O集成到大多数管道中。

Oryx

由Cloudera Hadoop发行版的创建者提供的Oryx,使用Apache Spark和Apache Kafka在实时数据上运行机器学习模型。Oryx提供了一种构建项目的方式,这些项目需要立即做出决定,例如推荐引擎或实时异常检测,这些都可以通过新数据和历史数据获得通知。

版本2.0对该项目几乎进行了完全重新设计,其组件以lambda架构松散耦合。可以随时添加新算法和这些算法的新抽象(例如,用于超参数选择)。

PyTorch Lightning

当功能强大的项目流行时,通常会辅以易于使用的第三方项目。PyTorch Lightning为PyTorch提供了组织包装,因此用户可以专注于重要的代码,而不必为每个项目编写样板。

可充分利用机器学习的14种开源工具

PyTorch Lightning使用基于类的结构,因此PyTorch项目的每个常见步骤都封装在类方法中。训练和验证循环是半自动化的,因此你只需要为每个步骤提供逻辑即可。在多个GPU或不同的硬件组合中设置训练结果也更加容易,因为这样做的指令和对象引用是集中的。

Scikit-learn

由于Python易于采用且几乎适用于所有应用程序的库的广泛性,它已成为数学科学和统计学的首选编程语言。Scikit-learn通过在几个现有的Python软件包(NumPy,SciPy和Matplotlib)之上构建数学和科学工作来利用这一广度。

可充分利用机器学习的14种开源工具

生成的库可用于交互式“工作台”应用程序或嵌入到其他软件中并重新使用。该套件可通过BSD许可获得,因此它是完全开放的,并且可重复使用。

Shogun

Shogun是这个工具中时间最长的项目之一。它创建于1999年,用C ++编写,但是可以与Java,Python,C#,Ruby,R,Lua,Octave和Matlab一起使用。最新的主要版本6.0.0增加了对微软Windows和Scala语言的本机支持。

虽然广受欢迎,范围广泛,但Shogun也有竞争对手。另一个基于c++的机器学习库Mlpack是在2011年才出现的,但是它声称比其他库更快、更容易使用(通过一个更完整的API集)。

Spark MLlib

MLlib是Apache Spark和Apache Hadoop的机器学习库,拥有许多常用算法和有用的数据类型,能够快速,大规模地运行。尽管Java是在MLlib中工作的主要语言,但是Python用户可以将MLlib与NumPy库连接,Scala用户可以针对MLlib编写代码,而R用户可以从1.5版开始插入Spark。

可充分利用机器学习的14种开源工具

MLlib的版本3专注于使用Spark的DataFrame API(与较早的RDD API相对),并提供了许多新的分类和评估功能。

另一个项目,MLbase,建立在MLlib的顶部,以使其更容易得出结果。用户无需编写代码,而是使用SQL的声明性语言进行查询。

Weka