机器学习之开源库大总结
研究数据挖掘和机器学习有一段时间了,对数据挖掘来说,商用软件有SAS、 Clementine、Oracle数据挖掘组件等等;由于个人学习和版权、算法定制等问题,开源的数据挖掘与机器学习软件(库)目前也十分必需,现在就跟大家介绍下比较流行和常用的机器学习开源库。
以前在学校用过matlab,说实话真方便,通常一个模型只要几十行甚至十几行代码就能搞定,但是正版matlab较贵,而且不太适合商业开发使用,所以工业界使用它的并不多(通信行业、研究所比较普遍);相应地,在工业界机器学习和数据挖掘的实验语言多为java、python,因为 python与C\C++具有先天的血缘,所以python更容易扩展;java的机器学习库也十分流行,主要体现在大数据下的jvm的本质和算法并行化的优势;现推荐给大家以下学习库:
1.机器学习开源软件网(收录了各种机器学习的各种编程语言学术与商业的开源软件)
2 偶尔找到的机器学习资源网:(也非常全,1和2基本收录了所有ML的经典开源软件了)
http://www.dmoz.org/Computers/Artificial_Intelligence/Machine_Learning/Software/
3 libsvm (支持向量机界最牛的,不用多说了,台湾大学的林教授的杰作)
http://www.csie.ntu.edu.tw/~cjlin/libsvm/
4 WEKA (基于java的机器学习算法最全面最易用的开源软件)
http://www.cs.waikato.ac.nz/ml/weka/
5 scikit (本人最喜欢的一个基于python的机器学习软件,代码写得非常好,而且官方的文档非常全,所有都有例子,算法也齐全,开发也活跃
,强烈推荐给大家用)
https://pypi.python.org/pypi/scikit-learn/
6 OpenCv(最牛的开源计算机视觉库了,前途无可限量,做图像处理与模式识别的一定要用,总不能整天抱着matlab做实验和工业界脱节吧,但是有一定难度)
http://opencv.willowgarage.com/wiki/
7 Orange (基于c++和python接口的机器学习软件,界面漂亮,调用方便,可以同时学习C++和python,还有可视化的功能,)
8 Mallet (基于JAVA实现的机器学习库,主要用于自然语言处理方面,特色是马尔可夫模型和随机域做得好,可和WEKA互补)
9 NLTK(PYTHON的自然处理开源库,非常易用,也强大,还有几本orelly的经典教程)
10 lucene(基于java的包括nutch,solr,hadoop,mahout等全套,是做信息检索和搜索引擎的同志们必学的开源软件了,学JAVA的必学)
Additional:
1.pyml(a python module for machine learning,支持svm/knn/k-means==)
2.mahout(阿帕奇基金下项目,其主要是可以与hadoop进行天然结合,从而并行运行,在鲁棒性方面很好)
3.milk(python的机器学习工具包,主要是针对监督学习,包括svm/knn/决策树)
http://pypi.python.org/pypi/milk/
4.Octave(Andrew NG课上推荐使用的,类似matlab)
http://www.gnu.org/software/octave/