决策树归纳开源代码

时间:2010-10-04 07:54:46

标签: open-source machine-learning data-mining computer-vision decision-tree

我正在为计算机视觉课程准备一项任务,其中包括在从图像中提取特征后训练一个简单的分类器。由于机器学习不是这里的主要话题,我不希望学生从头开始实施学习算法。所以,我必须向他们推荐一些参考实现。我相信决策树分类器适用于此。

问题是该类允许的语言种类很多:C ++,C#,Delphi。此外,我不希望学生花费大量时间来处理任何技术问题,如链接库。 WEKA非常适合Java。我们也可以将OpenCV与所有包装器一起使用,但它非常大而且笨拙,而我想要简单而甜蜜的东西。

那么,你知道用于学习决策树的任何简单的C ++ / C#/ Delphi库吗?

3 个答案:

答案 0 :(得分:2)

我知道这些库,我最近才使用过这些库。这两个是WafflesTilburg-Based Memory Learner(TiMBL)。两者都是免费的和开源的(分别是lgpl和GNU gpl)。此外,两者都是稳定,成熟的库。 Waffles创建并且目前由一位开发人员维护,而TiMBL我认为是一个学术项目(针对语言学领域)。

在这两个中,我只使用了Waffles中的决策树模块(在GDecisionTree类中,请参阅文档here)Waffles可能是这里的首选库,因为它包含一组适当的描述性统计函数以及绘制诊断功能,可视化解决方案空间等等。图书馆作者(Mike Gashler)还包括一组演示应用程序,但我不记得其中一个应用程序是否为决策树。

我已经使用了Waffles Library中的几个类(包括决策树类),我当然可以推荐它。我对Tilburg-Based Memory Learner没有更多的说法,因为我从未使用过它的决策树类。

答案 1 :(得分:2)

你看过Alglib中的“决策森林”实施吗?它可以免费用于学术用途。该网页声称支持C ++ / C#和(可能)Delphi。它不是一个决策树实现,但random forests往往比许多问题上的单个决策树更好的分类,并且它们不需要花费更长的时间来训练。我的猜测是,很难在多种语言中找到一致的决策树实现,因为有很多不同类型的决策树算法。

如果Alglib不是您需要的,那么维基百科文章中列出了许多其他开源随机森林库。 Cavaet:Alglib实现声称不是传统的随机森林。

答案 2 :(得分:0)

编程语言不是问题。很难找到每种语言的决策树实现。几乎不可能保证所有版本都是相同的实现。

由于决策树是黑盒方法。您可以将训练和测试数据写入标准文件(例如,Weka中的arff格式,opencv也有自己的格式。)并使用命令行来调用树学习器和测试器。这样,所有学生都拥有相同的决策树。否则,学生A使用一个好的树学习者,学生B使用一个坏树学习者,当他们的结果不同时,你不知道它是否来自决策树或CV部分的差异(例如特征处理)。在这种情况下,您将进入您必须关心树学习者的详细信息/实施质量的情况。