我有一个决策树,我需要转向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/

10-13 06:46