【发布时间】:2013-04-13 15:30:42
【问题描述】:
这里是概念问题。
我正在递归地构建决策树。函数的每次迭代都采用训练示例的子集,遍历所有特征和每个特征中所有可能的拆分,找到可能的最佳拆分,将子集拆分为两个较小的子集,并调用自身(函数)两次,每次一个拆分子集。
我之前在 MatLab 中对此进行了编码,但它运行得太慢了,所以现在我在 C 中尝试它(我不太熟悉)。在 MatLab 中,我使用了一个全局“拆分”矩阵来保存每个拆分的信息(哪个特征,该特征中的什么值,如果这是一个叶节点,分类是什么,每个子节点的行号),并且这样我就可以使用新的测试数据点遍历该矩阵以找到它的分类。
C 中的全局二维数组看起来可以使用头文件,但如果有另一种方法,我宁愿不进入头文件。问题是,因为函数是递归调用的,所以我很难知道“拆分”中的下一个可用行是什么。我可以做一些事情,比如孩子的行是父行的 2*i 和 2*i+1,但是对于有很多拆分的大型数组,这将需要大量的初始存储。
有什么想法吗?
【问题讨论】:
标签: c machine-learning