我正在寻找一个理想情况下具有以下功能的库:
实现多维数据的层次聚类(理想情况下是在相似性或距离矩阵上)
实现支持向量机
是在C++中
有点记录(这个似乎是最难的)
我希望这是用C++编写的,因为我对这种语言最熟悉,但如果图书馆值得,我也会使用任何其他语言.我用Google搜索并发现了一些,但我没有时间尝试全部,所以我想听听其他人的经历.如果您对推荐的图书馆有一些经验,请回答.
PS:我也可以使用不同的库来进行聚类和SVM.
我只使用了很少的ML库,所以我很乐意推荐它们; dlib ml肯定是其中之一.
Sourceforge 在这里下载; 和前沿的退房:
hg clone http://hg.code.sf.net/p/dclib/code dclib-code
最初的图书馆创建者和现任维护者是戴维斯·金.
您的愿望清单与相关的dlib功能:
良好的文档:针对相对较小的用户/开发人员组的免费开源库,这可能是最好的; 除了通常的文档,在五年的开发历史中精炼,有一个经常更新的介绍dlib,一个(低流量)论坛 ; 和一大组优秀的例子(包括至少一个用于SVM).
C++:就我所知,C++是100%.
支持 - 矢量机算法:是的; 实际上,SVM模块一直是该库最新更新的重点.
分层聚类算法:不开箱即用; 但是,k-means聚类的打包代码 .显然,每种技术的结果都是非常不同的,但是相似性度量的计算和随后的递归/迭代分区步骤是两者的核心 - 换句话说,用于分层聚类的计算引擎就在那里.要使现有的聚类模块适应HC,将需要多行代码,但考虑到您几乎在数据表示级别工作,这也不是一项重大工作.
dlib ml还有几点可以推荐它.它是一个成熟的库(现在版本为17.x,版本1.x在2005年末的某个时候发布,我相信)但它仍然处于积极开发状态,回购日志证明了这一点(最新更新,17.27,是17 2010年5月)和最后一次提交(2010年5月23日).此外,它还包括很少的其他ML技术(例如,贝叶斯网络,内核方法等).第三,dllib ml具有出色的"支持"库,用于矩阵计算和优化 - 这两者都是许多ML技术的基本构建模块.
在源代码中,我注意到dlib ml是在BSL(Boost?)下获得许可的,这是一个开源许可证,但我对这种类型的许可证一无所知.
WEKA(http://www.cs.waikato.ac.nz/ml/weka/)是一个优秀的开源机器学习库,可以满足除C++之外的大部分需求 - 它是用Java编写的.它有很好的文档记录,实现支持向量机和集群,我有很好的经验.
通用机器学习库:
这两个类似于Weka.然而,他们有效率.
1.Shark(LGPL)
https://github.com/Shark-ML/Shark/
2.华夫饼(LGPL)
http://waffles.sourceforge.net/
SVM和其他线性分类器:
1.LibSVM(BSD风格)
2.LibLinear(BSD风格)
http://www.csie.ntu.edu.tw/~cjlin/libsvm/
所有这些都是用C++编写的.
好的,为了完整起见,我会发布最后的内容.我现在正在使用scipy-cluster作为聚类部分.这是迄今为止我发现的最通用的实现.我想我将使用libSVM(它现在有一个Python接口)用于SVM部分.我将使用Python,因为在C++中确实没有适合的层次聚类实现(C聚类库专门用于微阵列而不支持多维数据).