我有一个决策树,我需要转向C#中的代码
简单的方法是使用if-else语句,但是在此解决方案中,我将需要创建4-5个嵌套条件。
我正在寻找一种更好的方法来做,到目前为止,我对规则引擎有所了解。
您还有其他建议来建议一种有效的方法来开发具有4-5个嵌套条件的决策树吗?
最佳答案
我在书中实现了一个简单的决策树作为样本。该代码可用online here,因此也许您可以将其用作灵感。决策本质上表示为一个类,该类具有对true
分支和false
分支的引用,并包含执行测试的函数:
class DecisionQuery : Decision {
public Decision Positive { get; set; }
public Decision Negative { get; set; }
// Primitive operation to be provided by the user
public Func<Client, bool> Test { get; set; }
public override bool Evaluate(Client client) {
// Test a client using the primitive operation
bool res = Test(client);
// Select a branch to follow
return res ? Positive.Evaluate(client) : Negative.Evaluate(client);
}
}
在这里,
Decision
是一个包含Evaluate
方法的基类,而源包含一个附加的派生类型,该派生类型包含该树的最终决策(是/否)。 Client
类型是您正在使用树进行分析的样本输入数据。要创建决策树,您可以编写如下内容:
var tree = new DecisionQuery {
Test = (client) => client.Income > 40000,
Positive = otherTree,
Negative = someOtherTree
};
如果您只想编写五个嵌套的静态
if
子句,则也许只需编写if
就可以了。使用这样的类型的好处是您可以轻松组成树-例如重用树的一部分或模块化构造。关于c# - 如何使用C#实现决策树(Visual Studio 2008)-帮助,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3889301/