Grail (C++)  1.1.1
A multi-platform, modular, universal engine for embedding advanced AI in games.
C45Algorithm.h
1 #ifndef GRAIL_C45_ALGORITHM_H
2 #define GRAIL_C45_ALGORITHM_H
3 
4 #include <memory>
5 #include <unordered_set>
6 #include "C45IterationParameters.h"
7 #include "C45ValueDecisionCounter.h"
8 #include "Dataset.hh"
9 #include "../DecisionTree/DecisionNode.h"
10 
11 namespace grail
12 {
13  namespace simulation
14  {
15  class ISimulatedGameAction;
16 
22  {
23  public:
30  std::unique_ptr<DecisionNode<ISimulatedGameAction>> ConstructTree(
31  Dataset& dataset,
32  int maxDepth = decisionTreeMaxDepth);
33 
37  const std::unordered_set<int>& GetUsedColumns() const;
38 
39  private:
40  void RunForContinuousColumn(size_t column, double globalEntropy, C45IterationParameters& params);
41  void RunForNominalColumn(size_t column, double globalEntropy, C45IterationParameters& params);
42  std::unique_ptr<DecisionNode<ISimulatedGameAction>> Iterate(C45IterationParameters parameters);
43  std::unique_ptr<DecisionNode<ISimulatedGameAction>> PerformSplit(
44  C45IterationParameters& params,
45  int bestColumnIndex);
46 
47  const ISimulatedGameAction* globalFrequentAction = nullptr;
48  std::unordered_set<int> usedColumns;
49  int maxDepth = 0;
50  int currentDepth = 0;
51  };
52  }
53 }
54 
55 #endif //GRAIL_C45_ALGORITHM_H
grail::simulation::C45Algorithm::GetUsedColumns
const std::unordered_set< int > & GetUsedColumns() const
Gets indices of columns in the dataset used for learning with the C4.5 Algorithm that were actually u...
Definition: C45Algorithm.cpp:156
grail::simulation::ISimulatedGameAction
Base class for all actions in SimulatedGame. Derive from it for your actions.
Definition: ISimulatedGameAction.hh:39
grail::simulation::C45IterationParameters
The whole class should be INTERNAL; part of the private interface.
Definition: C45IterationParameters.h:12
grail::simulation::Dataset
Definition: Dataset.hh:19
grail::simulation::C45Algorithm::ConstructTree
std::unique_ptr< DecisionNode< ISimulatedGameAction > > ConstructTree(Dataset &dataset, int maxDepth=decisionTreeMaxDepth)
Constructs a new decision tree based on the provided dataset. The decision type is given by generic a...
Definition: C45Algorithm.cpp:55
grail::simulation::C45Algorithm
This class encapsulates the C4.5 Algorithm used to generate a decision tree (see Grail....
Definition: C45Algorithm.h:21