gpt4 book ai didi

c++ - 寻找 C4.5 算法的 C++ 实现

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:31:00 25 4
gpt4 key购买 nike

我一直在寻找 C4.5 algorithm 的 C++ 实现, 但我还没有找到。我找到了昆兰的C4.5 Release 8 ,但它是用 C 语言编写的...有人见过 C4.5 算法的任何开源 C++ 实现吗?

我正在考虑移植 J48 source code (或者简单地围绕 C 版本编写一个包装器)如果我在那里找不到开源 C++ 实现,但我希望我不必那样做!如果您遇到过该算法的 C++ 实现,请告诉我。

更新

我一直在考虑围绕 C5.0 算法 ( C5.0 is the improved version of C4.5 ) 的 C 实现编写一个瘦 C++ 包装器 的选项。我下载并编译了 C5.0 算法的 C 实现,但它看起来并不容易移植到 C++。 C 实现使用大量全局变量,简单地围绕 C 函数编写一个薄的 C++ 包装器不会导致面向对象的设计,因为每个类实例都将修改相同的全局参数。换句话说:我将没有封装,这是我需要的非常基本的东西。

为了获得封装,我需要将 C 代码完全移植到 C++,这与将 Java 版本 (J48) 移植到 C++ 大致相同。

更新 2.0

以下是一些具体要求:

  1. 每个分类器实例都必须封装自己的数据(即除常量外没有全局变量)。
  2. 支持分类器的并行训练和分类器的并行评估。

这是一个很好的场景:假设我正在进行 10 折交叉验证,我想同时训练 10 个决策树及其各自的训练集片段。如果我只是为每个切片运行 C 程序,我将不得不运行 10 个进程,这并不可怕。但是,如果我需要对数千个数据样本进行实时分类,那么我将不得不为每个要分类的样本启动一个新过程,这效率不高。

最佳答案

C4.5 的 C++ 实现称为 YaDT 可在此处“决策树”部分找到:
http://www.di.unipi.it/~ruggieri/software.html

这是最新版本的源代码:
http://www.di.unipi.it/~ruggieri/YaDT/YaDT1.2.5.zip

来自描述该工具的论文:

[...] In this paper, we describe a new from-scratch C++ implementation of a decision tree induction algorithm, which yields entropy-based decision trees in the style of C4.5. The implementation is called YaDT, an acronym for Yet another Decision Tree builder. The intended contribution of this paper is to present the design principles of the implementation that allowed for obtaining a highly efficient system. We discuss our choices on memory representation and modelling of data and metadata,on the algorithmic optimizations and their effect on memory and time performances, and on the trade-off between efficiency and accuracy of pruning heuristics. [...]

论文可用here .

关于c++ - 寻找 C4.5 算法的 C++ 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10757202/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com