How to implement decision tree with c# (visual studio 2008) - Help

前端 未结 2 1435
挽巷
挽巷 2021-01-31 19:57

I have a decision tree that i need to turn to a code in C#

The simple way of doing it is using if-else statements but in this solution i will need to create 4-5 nested c

2条回答
  •  野的像风
    2021-01-31 20:11

    I implemented a simple decision tree as a sample in my book. The code is available online here, so perhaps you could use it as an inspiration. A decision is essentially represented as a class that has references to true branch and false branch and contains a function that does the test:

    class DecisionQuery : Decision {
      public Decision Positive { get; set; }
      public Decision Negative { get; set; }
      // Primitive operation to be provided by the user
      public Func 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);
      }
    }
    

    Here, Decision is a base class that contains Evaluate method and the source contains one additional derived type that contains a final decision of the tree (yes/no). The type Client is a sample input data that you're analysing using the tree.

    To create a decision tree, you can write something like:

    var tree = new DecisionQuery {
        Test = (client) => client.Income > 40000,
        Positive = otherTree,
        Negative = someOtherTree
      };
    

    If you just want to write five nested static if clauses then maybe just writing if is fine. The benefit of using a type like this one is that you can easily compose trees - e.g. reuse a part of a tree or modularize the construction.

提交回复
热议问题