我有一个决策树。
我向决策树提供一些输入值。
然后,决策树返回一个值。
输入值可以是“孩子数”,“年龄”等。
然后,决策树可以返回(例如)某个值,该值将表明该家庭拥有多少辆汽车或类似的东西。
该决策树(如果转换为if-then语句)将如下所示:
int i=0;
if (ownedHouses==0)
{
if (numberOfChildren==4)
{
if (ageFather==39)
{
if (incomeFamily==40000)
{
if (carsAlreadyCrashed==1)
{
i=3;
}
else
{
if (carsAlreadyCrashed==2)
{
if (insurancePaysForCrashes==1)
{
i=5;
}
}
else
{
i=4;
}
}
else
{
i=11;
}
}
}
else
{
i=2;
}
}
else
{
i=9;
}
}
else
{
i=22;
}
else
{
i=8;
}
这仅仅是一个例子。实际上,最终的if-then语句绝对是巨大的。尽管我可以解析数据并从中创建一个if-then循环,但是我无法在软件中使用如此大的if-then循环。
因此,我正在寻找将决策树集成到我的软件中的另一种方法。
我已经看到了在运行时解析决策树数据(以任何形式提供的形式...),然后从中创建具有根,节点和叶子的类的方法。
就我而言,这还不够快。
还有其他想法吗?
感谢您的帮助。
编辑:我已经将某些值更改为实际值,以使含义更清楚。
最佳答案
我知道最快的实现是在ALGLIB中实现的。
决策树存储为双精度数组。
叶节点-两个值{-1,数据}。
非叶节点-三个值{input_value_index,阈值,right_branch_offset}。
您可以在dforest.dfprocessinternal
中找到此方法的实现
关于c++ - C++决策树存储,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16730236/