使用哪台机器学习库

时间:2010-05-26 17:32:41

标签: cluster-analysis machine-learning svm

我正在寻找一个理想情况下具有以下功能的库:

  • 实现多维数据的层次聚类(理想情况下是在相似性或距离矩阵上)
  • 实现支持向量机
  • 在C ++中
  • 有点记录(这个似乎最难)

我希望这是在C ++中,因为我对这种语言最熟悉,但如果图书馆值得,我也会使用任何其他语言。我用Google搜索并发现了一些,但我没有时间尝试全部,所以我想听听其他人的经历。如果您对推荐的图书馆有一些经验,请回答。

P.S。:我也可以使用不同的库进行聚类和SVM。

6 个答案:

答案 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/