我有一个决策树。我给这个决策树提供了一些输入值。然后,决策树返回一个值。
输入值可以是“孩子的数量”、“年龄(以年为单位)”等。决策树然后可以返回(例如)一个特定值,该值将指示家庭拥有多少辆汽车或类似的东西。
此决策树(如果转换为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循环。
因此,我正在寻找一种不同的方法来将决策树集成到我的软件中。
我见过决策树数据(以任何形式提供...)的方法。在运行时被解析,然后从它创建具有根、节点和叶的类。
就我的目的而言,这还不够快。
还有没有人有别的主意?
谢谢你的帮助。
编辑:我已经将一些值更改为现实生活中的值,以使含义更清晰。
发布于 2013-06-04 14:57:37
我所知道的最快的实现是在ALGLIB中实现的。决策树以双精度数组的形式存储。
阈值叶节点-两个值{-1,data}.
您可以在dforest.dfprocessinternal中找到此方法的实现
https://stackoverflow.com/questions/16730236
复制相似问题