我正在寻找一个理想情况下具有以下功能的库:
我希望这是在C ++中,因为我对这种语言最熟悉,但如果图书馆值得,我也会使用任何其他语言。我用Google搜索并发现了一些,但我没有时间尝试全部,所以我想听听其他人的经历。如果您对推荐的图书馆有一些经验,请回答。
P.S。:我也可以使用不同的库进行聚类和SVM。
答案 0 :(得分:16)
我只使用了很少的ML库,所以我很乐意推荐它们; dlib ml 肯定是其中之一。
Sourceforge下载here;和前沿的退房:
hg clone http://hg.code.sf.net/p/dclib/code dclib-code
最初的图书馆创建者和现任维护者是戴维斯·金。
您的愿望清单与相关的dlib功能:
良好的文档:对于面向相对较小的用户/开发人员群体的免费开源库,这可能就像它获得的一样好;除了通常的文档,在五年开发历史中精炼,还有一个经常更新的 Intro to 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?)下获得许可的,这是一个开源许可证,但我对这种类型的许可证一无所知
答案 1 :(得分:10)
WEKA(http://www.cs.waikato.ac.nz/ml/weka/)是一个优秀的开源机器学习库,可以满足除C ++之外的大部分需求 - 它是用Java编写的。它有很好的文档记录,实现支持向量机和集群,我有很好的经验。
答案 2 :(得分:10)
通用机器学习库:
这两个与Weka相似。然而,他们有效率。
1.Shark(LGPL)
https://github.com/Shark-ML/Shark/
2.Waffles(LGPL)
http://waffles.sourceforge.net/
SVM和其他线性分类器:
1.LibSVM(BSD风格)
2.LibLinear(BSD风格)
http://www.csie.ntu.edu.tw/~cjlin/libsvm/
所有这些都是用C ++编写的。
答案 3 :(得分:5)
好的,为了完整起见,我会发布我最后的内容。我现在正在使用scipy-cluster作为聚类部分。这是迄今为止我发现的最通用的实现。我想我将使用libSVM(它现在有一个Python接口)用于SVM部分。我正在使用Python,因为在C ++中确实没有适合的层次聚类实现(C Clustering Library专门用于微阵列而且不支持多维数据。)
答案 4 :(得分:4)
这不是C ++,但你考虑使用R.特别是,看看the machine learning view on CRAN,它显示了上面的许多库,包括Weka和libsvm。
答案 5 :(得分:1)
另外两种可能的选择:
条件随机场(CRF): http://www.chokkan.org/software/crfsuite/
隐马尔可夫模型(HMM): http://www.cs.au.dk/~asand/?page_id=152
对于一般的ML库,请考虑Torch(版本7,截至撰写本文时): https://github.com/andresy/torch
Orange系统是用C ++实现的,可以用作库,但重点是将其功能公开为Python包装器,以实现灵活的脚本编写以及可视化编程: http://orange.biolab.si/