转自:http://hi.baidu.com/dj_chen/item/1cb4a298482cd4dc7a7f0119
最近找了一下Machine Learning方面的第三方库,感觉machine learning和视觉的结合越来越多,自己以后一定也会在处理视觉的问题中用到machine learning的方法,所谓“工欲善其事必先利其器”,因此打算熟悉一下第三方库的用法,为以后使用缩短时间。网上存在很多ML的库,没有人做过系统的比较和评价,很难说哪一个比较好,这也造成一定的麻烦,不知道该如何选择。
Torch库是最容易搜到的,库的说明文档也很齐全,例子也比较多,貌似不错,但是仔细看后才发现,Torch和很多C++常用的东西不兼容,比如stl的容器就不能用,这也得库未免会在开发中造成一些麻烦,比如从前的代码不能重用,容器这么好的东西自己是绝对不愿意舍去的,所以Torch就排除了。但是看起来Torch也是很优秀的,并且现在一直在更新,融入新的算法,所以大家有感兴趣的还是可以看一看,下面就是Torch的网站:http://torch5.sourceforge.net/
MLC++包含了supervised learning算法,是Stanford University开发的,但是好像最近一次的更新还是在97年,文档也是比较齐全,但是介于其年代的久远(囧)和对输入数据的要求,还是不能使用,但是网上对MLC++的评价还是不错的,不知道是不是因为其“年龄大”而有了一定的知名度。MLC++网址:http://www.sgi.com/tech/mlc/
终于找到了个评论最好的库,据说很好用,而且一直更新,但是最悲剧的是居然是java库。Weka库网站很正规,文档和源码都有,还提供了一部分的dataSet共使用者测试,但是对我却是毫无用处了。Weka:http://www.cs.waikato.ac.nz/ml/weka/
Waffles 库也是可以免费使用的库,它为我们提供了命令行的很多工具,当然其功能也有相应的C++实现类,库中包含很多Demo,来示范如何有效使用。文档相当的详尽,貌似还提供了绘图之类的功能,但是自己总是感觉它太过复杂,和自己的编程风格不太一致,用起来可能不顺手,大家有兴趣的可以去看一看,功能应该是很强大的,并且也是一直更新:http://waffles.sourceforge.net/
总算功夫不负有心人,最后找到了Shark library,Shark Machine learning library 比较符合我的使用习惯,支持C++的介乎所有内容,包括容器和模板,容易集成使用的自己的工程当中来,它除了包好learning的算法之外,还有一些线性和非线性优化,像梯度下降之类的优化算法,它总共包含8个模块,文档中除了对每一个类的说明之外,还有详细的Tutorial,来教你如何正确的使用,并且安装简单,能够很好的支持windows,同样也是一直在更新,并且号称速度比较快,能够和GUI库一块使用,还提供了QT下的一些demo,鉴于以上优点,自己也就选择了Shark,据说已经有了10年的开发历史。http://shark-project.sourceforge.net/index.html
对于Shark的安装并不复杂,下载Cmake后加载并生成可以在你的开发环境下使用的project,然后再编译就可以了。接下来就是要试试它的功能了,如果有用过的希望大家一起交流,毕竟刚接触不知道它有没有什么局限性。
标签:machine learning library 机器学习库 Torch MLC++ Weka Waffles Shark (转载请注明出处)