机器学习工具
机器学习工具
参考网站:
https://www.zhihu.com/question/20472776(知乎:学习机器学习有哪些好工具推荐?)
http://blog.csdn.net/myarrow/article/details/50608334(CSDN:机器学习工具汇总)
- 平台VS库
- 机器学习平台
机器学习平台提供了从头到尾完成一个机器学习项目的功能。也就是,数据分析,数据准备,建模和算法评估及选择。
机器学习平台的特征有:
- 它们提供了机器学习项目中每一个过程所需要的功能。
- 界面可以是图形化的,也可以是命令行,平台将所有的或部分界面结合起来。
- 它们提供功能的松耦合,你可以在特定项目中将各个部件结合起来。
- 它们是为通用目的用途和探索而量身定制的,而不是为了速度,可扩展性和准确性。
以下是一些机器学习平台:
- Python SciPy的子集(比如 Pandas和 scikit-learn)。
- 机器学习库
机器学习库提供了完成一个机器学习项目部分模块的功能。比如,一个库可能提供了一系列建模算法。
机器学习库的特征有:
- 它们为一个机器学习项目中一个或多个步骤提供了特定的功能。
- 它们的接口通常是需要编程的应用程序编程接口。
- 它们为特定用例,问题类型或环境量身定制。
以下是一些机器学习库:
- Python中的 scikit-learn。
- Java中的 JSAT。
- .Net中的 Accord Framework。
- 机器学习工具界面
另一种区分机器学习工具的方式是根据它们提供的界面。
这可能令人迷惑,因为一些工具提供了多个界面。然而,这可能为你挑选机器学习工具提供了起点,甚至可能为你区分这些工具提供了帮助。
下面是一些常见的界面。
- 图形化用户界面
机器学习工具提供了图形用户界面,包括窗口,得分,点击,专注于可视化。图形化用户界面的好处有:
- 允许掌握较少技术的用户完成机器学习工作。
- 专注于处理过程,以及如何最大限度地利用机器学习技术。
- 用户可以使用界面进行结构化处理。
- 更注重于信息的图形化展示,比如可视化。
以下是一些有图形化界面的机器学习工具:
- 命令行界面
机器学习工具提供了命令行界面,包括命令行程序,命令行参数,注重于输入和输出。命令行用户界面的好处有:
- 允许不是程序员的技术用户完成机器学习项目。
- 提供了许多专门的程序或机器学习项目特定子任务的编程模型。
- 根据需要的输入和将会得到的输出分解机器学习任务。
- 通过记录或脚本命令和命令行参数来促进有复验性的结果。
以下是一些提供命令行界面的机器学习工具:
如果你喜欢在命令行下工作,看看这本书《 Data Science at the Command Line: Facing the Future with Time-Tested Tools 》,可以让你了解如何在命令行下解决机器学习问题。
- 应用程序编程接口
机器学习工具提供了应用程序编程接口,可以让你自由决定在你的程序中使用什么元素以及如何使用。应用程序编程接口的好处有:
- 你可以将机器学习算法合并到自己的软件项目当中。
- 你可以创建自己的机器学习工具。
- 你可以在机器学习项目中灵活使用自己的处理流程和自动操作。
- 你可以将自己的方法与库提供的方法以及扩展提供的方法结合。
以下是一些带有应用程序编程接口的机器学习工具:
- 面向Python的 Pylearn 2。
- 面向Java的 Deeplearning4j。
- 面向C的 LIBSVM。
参考文章:
25个Java机器学习工具&库
最好的Python机器学习库
- 各种语言-工具-平台-库
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,
Theano,deep learning首推
svd-feature
推荐系统:svd-feature
Liblinear,libsvm
liblinear适用于大数据集,注重训练效率,不支持kernel trick。
分类/回归问题:liblinear, libsvm
opencv的ml库