# 机器学习工具

> 原文： [https://machinelearningmastery.com/machine-learning-tools/](https://machinelearningmastery.com/machine-learning-tools/)

工具是机器学习的重要组成部分，选择合适的工具与使用最佳算法同样重要。

在这篇文章中，您将仔细研究机器学习工具。了解它们的重要性以及您可以选择的工具类型。

![Machine Learning Tools](img/b45287f79c0a7c9ffb1ccff8f90e2bd7.jpg)

机器学习工具
摄影： [Lachlan Donald](https://www.flickr.com/photos/lox/9408028555/) ，保留一些权利。

## 为何使用工具

机器学习工具使应用机器学习更快，更容易，更有趣。

*   **更快**：好的工具可以自动化应用机器学习过程中的每一步。这意味着从思想到结果的时间大大缩短。另一种方法是你必须自己实现每个功能。从零开始。这比选择现成的工具要花费更长的时间。
*   **更容易**：您可以花时间选择好的工具，而不是研究和实现技术来实现。另一种方法是，您必须成为流程每个步骤的专家才能实现它。这需要研究，更深入的练习以理解技术，以及更高水平的工程以确保其有效实现。
*   **有趣**：初学者获得好成绩的障碍较小。您可以使用额外的时间来获得更好的结果或处理更多项目。另一种方法是，您将花费大部分时间来构建工具而不是获得结果。

### 有目的的工具

您不想为了自己的利益而学习和使用机器学习工具。他们必须服务于强大的目标。

机器学习学习工具提供了可用于在机器学习项目中提供结果的功能。当您尝试决定是否在工具上学习新工具或新功能时，可以将其用作过滤器。你可以问这个问题：

> 这如何帮助我在机器学习项目中取得成果？

机器学习工具不仅仅是机器学习算法的实现。它们可以是，但它们也可以提供在处理机器学习问题的过程中的任何步骤都可以使用的功能。

### 好与伟大的工具

您希望使用最佳工具来解决您正在处理的问题。如何分辨好机器学习工具和优秀机器学习工具之间的区别？

*   **直观界面**：出色的机器学习工具为应用机器学习过程的子任务提供了直观的界面。在任务的界面中有一个很好的映射和适用性。
*   **最佳实践**：优秀的机器学习工具体现了流程，配置和实现的最佳实践。示例包括机器学习算法的自动配置和内置于工具结构中的良好过程。
*   **可信资源**：优秀的机器学习工具维护得很好，经常更新，并且周围有一群人。查找工具周围的活动作为正在使用的标志。

### 何时使用机器学习工具

机器学习工具可以节省您的时间并帮助您在项目间保持一致性。您可以从使用机器学习工具中获得最大收益的一些示例包括：

*   **入门**：当您刚入门时，机器学习工具将指导您快速完成良好结果，让您有信心继续下一个项目。
*   **日常**：当您需要快速获得问题的良好结果时，机器学习工具可以让您专注于问题的细节而不是您需要使用的技术的深度得到答案。
*   **项目工作**：当您处理大型项目时，机器学习工具可以帮助您构建解决方案原型，找出需求并为您提供可能要实现的系统的模板。

## 平台与库

有很多机器学习工具。足够谷歌搜索可以让你感到不知所措。

考虑机器学习工具的一种有用方法是将它们分成**平台**和**库**。平台提供运行项目所需的全部内容，而库仅提供离散功能或完成项目所需的部分功能。

这不是一个完美的区别，因为一些机器学习平台也是库或某些库提供图形用户界面。然而，这提供了一个很好的比较点，以区分一般案例目的与特定目的工具。

### 机器学习平台

机器学习平台提供从头到尾完成机器学习项目的功能。即，一些数据分析，数据准备，建模和算法评估和选择。

机器学习平台的特点是：

*   它们提供机器学习项目中每个步骤所需的功能。
*   界面可以是图形，命令行，所有这些或一些组合的编程。
*   它们提供松散的功能耦合，要求您将各个部分连接在一起，以满足您的特定项目需求。
*   它们专为通用目的和探索而设计，而不是速度，可扩展性或准确率。

机器学习平台的例子是：

*   [WEKA 机器学习工作台](http://machinelearningmastery.com/what-is-the-weka-machine-learning-workbench/)。
*   [R 平台](http://machinelearningmastery.com/what-is-r/)。
*   Python SciPy 的子集（例如 [Pandas](http://machinelearningmastery.com/quick-and-dirty-data-analysis-with-pandas/) 和 [scikit-learn](http://machinelearningmastery.com/a-gentle-introduction-to-scikit-learn-a-python-machine-learning-library/) ）。

### 机器学习库

机器学习库提供完成机器学习项目的一部分的功能。例如，库可以提供一组建模算法。

机器学习库的特点是：

*   它们为机器学习项目中的一个或多个步骤提供特定功能。
*   该接口通常是需要编程的应用程序编程接口。
*   它们专为特定用例，问题类型或环境而定制。

机器学习库的示例如下：

*   [scikit-learn](http://machinelearningmastery.com/a-gentle-introduction-to-scikit-learn-a-python-machine-learning-library/) 在 Python 中。
*   Java 中的 [JSAT](https://github.com/EdwardRaff/JSAT) 。
*   [.NET 中的 Accord Framework](http://accord-framework.net/)

## 机器学习工具接口

考虑机器学习工具的另一种有用方法是通过它们提供的界面。

这可能会令人困惑，因为有些工具提供了多个接口。然而，它提供了一个起点，也许是一个差异点，可以帮助您选择机器学习工具。

以下是常见接口的一些示例。

### 图形用户界面

机器学习工具提供图形用户界面，包括窗口，指向和点击以及对可视化的关注。图形用户界面的好处是：

*   允许技术水平较低的用户完成机器学习。
*   专注于流程以及如何充分利用机器学习技术。
*   界面对用户施加的结构化过程。
*   更加专注于可视化等信息的图形表示。

带有图形界面的机器学习工具的一些示例包括：

*   [KNIME](https://www.knime.org/)
*   [RapidMiner](https://rapidminer.com/)
*   [橙](http://orange.biolab.si/)

### 命令行界面

机器学习工具提供命令行界面，包括命令行程序，命令行参数化以及对输入和输出的关注。命令行用户界面的好处是：

*   允许非程序员的技术用户完成机器学习项目。
*   为机器学习项目的特定子任务提供许多小型聚焦程序或程序模式。
*   根据所需的输入和要生成的输出来构建机器学习任务。
*   通过记录或编写脚本命令和命令行参数来提升可重现的结果。

用于命令行界面的机器学习工具的一些示例包括：

*   [华夫饼](http://waffles.sourceforge.net/)
*   [WEKA 机器学习工作台](http://machinelearningmastery.com/what-is-the-weka-machine-learning-workbench/)

如果您喜欢使用这个命令，请在命令行“[数据科学命令行：使用经过时间测试的工具](http://www.amazon.com/dp/1491947853?tag=inspiredalgor-20)面向未来”的命令行上查看有关如何解决机器学习问题的好书。

[![Amazon Image](img/34335eafcfd18a87a92c9d6c58006c9d.jpg)](http://www.amazon.com/dp/1491947853?tag=inspiredalgor-20)

### 应用程序接口

机器学习工具可以提供应用程序编程接口，使您可以灵活地决定使用哪些元素以及如何在您自己的程序中使用它们。应用程序编程接口的好处是：

*   您可以将机器学习融入您自己的软件项目中。
*   您可以创建自己的机器学习工具。
*   使您可以灵活地在机器学习项目中使用自己的流程和自动化。
*   允许将您自己的方法与库提供的方法结合使用，并扩展提供的方法。

带应用程序编程接口的机器学习工具的一些示例包括：

*   [Pylearn2](http://deeplearning.net/software/pylearn2/) for Python
*   [Deeplearning4j](http://deeplearning4j.org/) for Java
*   [LIBSVM](https://www.csie.ntu.edu.tw/~cjlin/libsvm/) 代表 C.

## 本地与远程机器学习工具

比较机器学习工具的最后一种方法是考虑该工具是本地的还是远程的。

本地工具是您在本地下载，安装和使用的工具，在第三方服务器上运行远程工具。

这种区别也可能是混乱的，因为某些工具可以以本地或远程方式运行。此外，如果您是优秀的工程师，您几乎可以将任何工具配置为您自己的服务器上的托管解决方案。

然而，这可能是一个有用的区别，可以帮助您理解和选择机器学习工具。

### 本地工具

在本地环境中下载，安装和运行本地工具。

*   针对内存数据和算法量身定制。
*   控制运行配置和参数化。
*   集成到您自己的系统中以满足您的需求

本地工具的示例包括：

*   [Shogun Library](http://www.shogun-toolbox.org/) for C ++
*   [Go 的 GoLearn](https://github.com/sjwhitworth/golearn)

### 远程工具

远程工具托管在服务器上，并从本地环境调用。这些工具通常称为机器学习即服务（MLaaS）。

*   量身定制，以便在更大的数据集上运行。
*   跨多个系统，多个内核和共享内存运行。
*   由于大规模运行所需的修改，因此算法较少。
*   更简单的接口提供对运行配置和算法参数化的较少控制。
*   通过远程过程调用集成到本地环境中。

远程工具的示例：

*   [Google Prediction API](https://cloud.google.com/prediction/)
*   [AWS 机器学习](https://aws.amazon.com/machine-learning/)
*   [Microsoft Azure 机器学习](https://azure.microsoft.com/en-us/services/machine-learning/)

您可以使用一些工具来设置自己的远程解决方案，并将其作为服务集成到您的环境中。例子包括：

*   [适用于 Hadoop 的 Apache Mahout](http://mahout.apache.org/)
*   [MLlib](http://spark.apache.org/mllib/) 代表 Spark
*   [PredictionIO](https://prediction.io/)

## 摘要

在这篇文章中，您发现了为什么工具在应用机器学习中如此重要。

您了解到，如果没有良好的机器学习工具，您将不得不从零开始实现所有技术，这需要技术和高效工程实践方面的专业知识。

您学习了三种结构化方法来考虑机器学习工具：

*   平台与库
*   图形用户界面与命令行界面与应用程序编程接口的对比
*   本地与远程

你使用什么机器学习工具？
发表评论并分享您当前使用的机床。