首页 > 代码库 > 机器学习工具

机器学习工具

机器学习工具

参考网站:

https://www.zhihu.com/question/20472776(知乎:学习机器学习有哪些好工具推荐?)

http://blog.csdn.net/myarrow/article/details/50608334(CSDN:机器学习工具汇总)

 

  1. 平台VS库

 

  1. 机器学习平台

机器学习平台提供了从头到尾完成一个机器学习项目的功能。也就是,数据分析,数据准备,建模和算法评估及选择。

 

机器学习平台的特征有:

  • 它们提供了机器学习项目中每一个过程所需要的功能。
  • 界面可以是图形化的,也可以是命令行,平台将所有的或部分界面结合起来。
  • 它们提供功能的松耦合,你可以在特定项目中将各个部件结合起来。
  • 它们是为通用目的用途和探索而量身定制的,而不是为了速度,可扩展性和准确性。

 

以下是一些机器学习平台:

  • WEKA Machine Learning Workbench
  • R Platform
  • Python SciPy的子集(比如 Pandas scikit-learn)。
  1. 机器学习库

机器学习库提供了完成一个机器学习项目部分模块的功能。比如,一个库可能提供了一系列建模算法。

 

机器学习库的特征有:

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

以下是一些机器学习库:

  • Python中的 scikit-learn
  • Java中的 JSAT
  • .Net中的 Accord Framework

 

  1. 机器学习工具界面

 

另一种区分机器学习工具的方式是根据它们提供的界面。

这可能令人迷惑,因为一些工具提供了多个界面。然而,这可能为你挑选机器学习工具提供了起点,甚至可能为你区分这些工具提供了帮助。

下面是一些常见的界面。

 

  1. 图形化用户界面

机器学习工具提供了图形用户界面,包括窗口,得分,点击,专注于可视化。图形化用户界面的好处有:

  • 允许掌握较少技术的用户完成机器学习工作。
  • 专注于处理过程,以及如何最大限度地利用机器学习技术。
  • 用户可以使用界面进行结构化处理。
  • 更注重于信息的图形化展示,比如可视化。

以下是一些有图形化界面的机器学习工具:

  • KNIME
  • RapidMiner
  • Orange
  1. 命令行界面

机器学习工具提供了命令行界面,包括命令行程序,命令行参数,注重于输入和输出。命令行用户界面的好处有:

  • 允许不是程序员的技术用户完成机器学习项目。
  • 提供了许多专门的程序或机器学习项目特定子任务的编程模型。
  • 根据需要的输入和将会得到的输出分解机器学习任务。
  • 通过记录或脚本命令和命令行参数来促进有复验性的结果。

以下是一些提供命令行界面的机器学习工具:

  • Waffles
  • WEKA Machine Learning Workbench

如果你喜欢在命令行下工作,看看这本书《 Data Science at the Command Line: Facing the Future with Time-Tested Tools 》,可以让你了解如何在命令行下解决机器学习问题。

  1. 应用程序编程接口

机器学习工具提供了应用程序编程接口,可以让你自由决定在你的程序中使用什么元素以及如何使用。应用程序编程接口的好处有:

  • 你可以将机器学习算法合并到自己的软件项目当中。
  • 你可以创建自己的机器学习工具。
  • 你可以在机器学习项目中灵活使用自己的处理流程和自动操作。
  • 你可以将自己的方法与库提供的方法以及扩展提供的方法结合。

以下是一些带有应用程序编程接口的机器学习工具:

  • 面向Python Pylearn 2
  • 面向Java Deeplearning4j
  • 面向C LIBSVM

 

参考文章:

25个Java机器学习工具&库

最好的Python机器学习库

 

 

  1. 各种语言-工具-平台-库

Python

  • scikit-learn
  • numpy
  • pandas
  • matplotlib

首先推荐一个大而全的网站 http://mloss.org,这个网站搜集了非常多的机器学习包,几乎涵盖了你听过的所有语言。

 

如果你是用python的话,那么numpy, scipy, matplotlib是基础的,

然后就是大名鼎鼎的scikit.learn了。

最近pandas也很火,可以提供类似R中dataframe的数据结构,pandas的作者 最近出版了一本书 Python for Data Analysis。

如果你想追求速度,那么可以考虑Cython和PyPy。

Anyhow,Python是一门很灵活的语言,很多基于C和C++的包也提供了python接口(比如shogun)

  • Tensorflow
  • Theano
  • sklearn

我是主推Python系的机器学习工具链的。主要的理由是:

1.现在的研究热点大都用Python实现。

2.Python可以编译到C(通过Cython),所以可以很好的保护源码。相对于Java的混淆字节码来说,编译到C之后的Python源码几乎不可能被分析。

3.Python是免费的,虽然用起来比matlab要麻烦。但是有开源社区的支持,包括最近公布的numbapro可以把Python JIT到CUDA/GPU平台运行。极大的简化了性能优化的工作。

4.Python在Linux集群上可以跑,但是matlab貌似是不行的。

 

Weka

java实现,Weka 非常适合初学者的工具

R语言

统计学出身的话,推荐R,免费开源,包数量多,社区强大。有本书叫mahine learning for hackers用的就是R。

我还是推荐R,因为python的语法非常的灵活,反正我初看《ML in action》,numpy,scipy库基本上看不懂。我后来用R语言把这本书中的问题都做了一遍,基本上书中的算法我都明白了,如果想看理论推导,可以参考《统计建模与R语言》。我推荐使用R来学习机器学习,可以快速的理解概念,算法。至于实现,算法都会了,难道实现还困难么?

 

Matlab

statistics Toolbox+众多扩展包

Octave

theano

想玩玩深度学习有theano

Theanodeep learning首推

svd-feature

推荐系统:svd-feature

Liblinear,libsvm

liblinear适用于大数据集,注重训练效率,不支持kernel trick

分类/回归问题:liblinear, libsvm

opencv的ml库

机器学习工具