Grail (C++)  1.1.1
A multi-platform, modular, universal engine for embedding advanced AI in games.
Dataset.hh
1 #ifndef GRAIL_DATASET_H
2 #define GRAIL_DATASET_H
3 
4 #include <functional>
5 #include <initializer_list>
6 #include <iostream>
7 #include <memory>
8 #include <vector>
9 #include "DatasetSample.hh"
10 #include "../DecisionTree/DecisionNode.h"
11 #include "../DecisionTree/DTConsiderationType.hh"
12 
13 namespace grail
14 {
15  namespace simulation
16  {
17  class ISimulatedGameAction;
18 
19  class Dataset
20  {
21  public:
25  size_t DecisionVariablesCount() const;
26 
30  const std::vector<DTConsiderationType>& GetConsiderationTypes() const;
31 
35  DTConsiderationType GetConsiderationType(int columnIndex) const;
36 
41  Dataset(std::initializer_list<DTConsiderationType> considerationTypes);
42 
47  Dataset(const std::vector<DTConsiderationType>& considerationTypes);
48 
50  void AddSample(std::unique_ptr<ISimulatedGameAction> decision, std::initializer_list<float> data);
51 
53  void AddSample(std::unique_ptr<ISimulatedGameAction> decision, const std::vector<float>& data);
54 
56  void AddSample(std::unique_ptr<DatasetSample> sample);
57 
63  double ValidateBinary(DecisionNode<ISimulatedGameAction>& decisionTreeNodeRoot);
64 
68  std::vector<std::unique_ptr<DatasetSample>> Samples;
69 
79  bool MoveFromOther(Dataset& sourceDataset);
80 
89  bool CopyFromOther(Dataset& sourceDataset);
90 
91  private:
92  bool CheckDataCompatibility(const Dataset& other) const;
93 
94  double CalculateDecisionEntropy() const;
95 
96  std::unique_ptr<Dataset> SplitByFilter(std::function<bool(std::vector<float>&)> filter) const;
97  std::vector<std::unique_ptr<Dataset>> SplitContinuous(size_t column, float splitValue) const;
98  std::vector<std::pair<std::unique_ptr<Dataset>, float>> SplitNominal(int column) const;
99 
100  std::vector<DTConsiderationType> considerationTypes;
101 
102  friend class C45Algorithm;
103  };
104  }
105 }
106 #endif //GRAIL_DATASET_H
grail::simulation::Dataset::GetConsiderationTypes
const std::vector< DTConsiderationType > & GetConsiderationTypes() const
Gets types of the respective consideration, in order of appearance. The types are either NUMERIC or N...
Definition: Dataset.cpp:26
grail::simulation::Dataset::MoveFromOther
bool MoveFromOther(Dataset &sourceDataset)
Moves samples from another dataset to the dataset this function was called on. It performs a basic ch...
Definition: Dataset.cpp:101
grail::simulation::Dataset::Samples
std::vector< std::unique_ptr< DatasetSample > > Samples
Data stored in Dataset.
Definition: Dataset.hh:68
grail::simulation::Dataset::AddSample
void AddSample(std::unique_ptr< ISimulatedGameAction > decision, std::initializer_list< float > data)
Constructs and insert new sample to the dataset. The sample is constructed using the @decision and va...
Definition: Dataset.cpp:36
grail::simulation::Dataset
Definition: Dataset.hh:19
grail::simulation::Dataset::ValidateBinary
double ValidateBinary(DecisionNode< ISimulatedGameAction > &decisionTreeNodeRoot)
Tests a decision tree (represented by the root node) against a dataset. Returns the accuracy of decis...
Definition: Dataset.cpp:157
grail::simulation::Dataset::GetConsiderationType
DTConsiderationType GetConsiderationType(int columnIndex) const
Returns the type of the i-th consideration; i = columnIndex.
Definition: Dataset.cpp:31
grail::simulation::Dataset::Dataset
Dataset(std::initializer_list< DTConsiderationType > considerationTypes)
Creates a new dataset.
Definition: Dataset.cpp:11
grail::simulation::DecisionNode
Class for internal usage. Decision tree node base type.
Definition: DecisionNode.h:20
grail::simulation::Dataset::CopyFromOther
bool CopyFromOther(Dataset &sourceDataset)
Adds samples from another dataset to the dataset this function was called on. It performs a basic che...
Definition: Dataset.cpp:115
grail::simulation::C45Algorithm
This class encapsulates the C4.5 Algorithm used to generate a decision tree (see Grail....
Definition: C45Algorithm.h:21
grail::simulation::Dataset::DecisionVariablesCount
size_t DecisionVariablesCount() const
Gets the number of measures (also know as considerations / decisions / columns in dataset).
Definition: Dataset.cpp:21