aGrUM  0.20.2
a C++ library for (probabilistic) graphical models
gum::TreeRegress< GUM_SCALAR, COMBINEOPERATOR, PROJECTOPERATOR, TerminalNodePolicy > Class Template Reference

Class used to perform Decision Tree Regression in the FMDP Framework. More...

#include <agrum/tools/multidim/patterns/treeRegress.h>

+ Collaboration diagram for gum::TreeRegress< GUM_SCALAR, COMBINEOPERATOR, PROJECTOPERATOR, TerminalNodePolicy >:

Public Member Functions

Constructors / Destructors
 TreeRegress (const MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy > *qAction, const Bijection< const DiscreteVariable *, const MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy > * > pxi)
 Default constructor. More...
 
 ~TreeRegress ()
 Default destructor. More...
 
Main Method
MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy > * compute ()
 Computes and builds the Function Graph that is the result of the operation. More...
 

Detailed Description

template<typename GUM_SCALAR, template< typename > class COMBINEOPERATOR, template< typename > class PROJECTOPERATOR, template< typename > class TerminalNodePolicy = ExactTerminalNodePolicy>
class gum::TreeRegress< GUM_SCALAR, COMBINEOPERATOR, PROJECTOPERATOR, TerminalNodePolicy >

Class used to perform Decision Tree Regression in the FMDP Framework.

Definition at line 55 of file treeRegress.h.

Constructor & Destructor Documentation

◆ TreeRegress()

template<typename GUM_SCALAR , template< typename > class COMBINEOPERATOR, template< typename > class PROJECTOPERATOR, template< typename > class TerminalNodePolicy>
gum::TreeRegress< GUM_SCALAR, COMBINEOPERATOR, PROJECTOPERATOR, TerminalNodePolicy >::TreeRegress ( const MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy > *  qAction,
const Bijection< const DiscreteVariable *, const MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy > * >  pxi 
)

Default constructor.

Definition at line 48 of file treeRegress_tpl.h.

52  :
53  vFunc__(qAction),
54  pxi__(pxi) {
55  GUM_CONSTRUCTOR(TreeRegress);
56  }
TreeRegress(const MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy > *qAction, const Bijection< const DiscreteVariable *, const MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy > * > pxi)
Default constructor.
const Bijection< const DiscreteVariable *, const MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy > *> pxi__
Definition: treeRegress.h:94
const MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy > * vFunc__
The function graphs used for the operation.
Definition: treeRegress.h:90

◆ ~TreeRegress()

template<typename GUM_SCALAR , template< typename > class COMBINEOPERATOR, template< typename > class PROJECTOPERATOR, template< typename > class TerminalNodePolicy>
gum::TreeRegress< GUM_SCALAR, COMBINEOPERATOR, PROJECTOPERATOR, TerminalNodePolicy >::~TreeRegress ( )

Default destructor.

Definition at line 66 of file treeRegress_tpl.h.

References gum::Set< Key, Alloc >::emplace().

66  {
67  GUM_DESTRUCTOR(TreeRegress);
68  }
TreeRegress(const MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy > *qAction, const Bijection< const DiscreteVariable *, const MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy > * > pxi)
Default constructor.
+ Here is the call graph for this function:

Member Function Documentation

◆ compute()

template<typename GUM_SCALAR , template< typename > class COMBINEOPERATOR, template< typename > class PROJECTOPERATOR, template< typename > class TerminalNodePolicy>
MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy > * gum::TreeRegress< GUM_SCALAR, COMBINEOPERATOR, PROJECTOPERATOR, TerminalNodePolicy >::compute ( )

Computes and builds the Function Graph that is the result of the operation.

Definition at line 83 of file treeRegress_tpl.h.

References gum::Set< Key, Alloc >::emplace().

83  {
84  MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy >* ret;
85  if (vFunc__->isTerminalNode(vFunc__->root())) {
86  ret = MultiDimFunctionGraph< GUM_SCALAR,
87  TerminalNodePolicy >::getTreeInstance();
88  ret->copy(*vFunc__);
89  } else
90  ret = xPloreVFunc__(vFunc__->root());
91  return ret;
92  }
MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy > * xPloreVFunc__(NodeId currentNodeId)
The whatever 1.
const MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy > * vFunc__
The function graphs used for the operation.
Definition: treeRegress.h:90
+ Here is the call graph for this function:

◆ xPloreVFunc__()

template<typename GUM_SCALAR , template< typename > class COMBINEOPERATOR, template< typename > class PROJECTOPERATOR, template< typename > class TerminalNodePolicy>
MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy > * gum::TreeRegress< GUM_SCALAR, COMBINEOPERATOR, PROJECTOPERATOR, TerminalNodePolicy >::xPloreVFunc__ ( NodeId  currentNodeId)
private

The whatever 1.

Definition at line 106 of file treeRegress_tpl.h.

References gum::Set< Key, Alloc >::emplace().

106  {
107  const InternalNode* currentNode = vFunc__->node(currentNodeId);
108 
109  std::vector< MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy >* >
110  varbucket;
111 
112  for (Idx moda = 0; moda < currentNode->nodeVar()->domainSize(); ++moda) {
113  MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy >* vpxi = nullptr;
114  context__.insert(currentNode->nodeVar(), moda);
115  if (vFunc__->isTerminalNode(currentNode->son(moda))) {
116  GUM_SCALAR value = vFunc__->nodeValue(currentNode->son(moda));
117  if (value) {
118  vpxi = MultiDimFunctionGraph< GUM_SCALAR,
119  TerminalNodePolicy >::getTreeInstance();
120  vpxi->manager()->setRootNode(vpxi->manager()->addTerminalNode(value));
121  }
122  } else {
123  vpxi = xPloreVFunc__(currentNode->son(moda));
124  }
125 
126  if (vpxi != nullptr) {
127  TreeOperator< GUM_SCALAR, COMBINEOPERATOR > combinope(
128  vpxi,
129  pxi__.second(currentNode->nodeVar()),
130  context__);
131  varbucket.push_back(combinope.compute());
132  }
133  delete vpxi;
134  context__.erase(currentNode->nodeVar());
135  }
136 
137  if (varbucket.empty()) return nullptr;
138 
139  MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy >* vp = varbucket.back();
140  varbucket.pop_back();
141  while (!varbucket.empty()) {
142  MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy >* temp = vp;
143  TreeOperator< GUM_SCALAR, PROJECTOPERATOR > projope(vp, varbucket.back());
144  vp = projope.compute();
145  delete temp;
146  temp = varbucket.back();
147  varbucket.pop_back();
148  delete temp;
149  }
150 
151  return vp;
152  }
MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy > * xPloreVFunc__(NodeId currentNodeId)
The whatever 1.
HashTable< const DiscreteVariable *, Idx > context__
Definition: treeRegress.h:95
const Bijection< const DiscreteVariable *, const MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy > *> pxi__
Definition: treeRegress.h:94
const MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy > * vFunc__
The function graphs used for the operation.
Definition: treeRegress.h:90
+ Here is the call graph for this function:

Member Data Documentation

◆ context__

template<typename GUM_SCALAR , template< typename > class COMBINEOPERATOR, template< typename > class PROJECTOPERATOR, template< typename > class TerminalNodePolicy = ExactTerminalNodePolicy>
HashTable< const DiscreteVariable*, Idx > gum::TreeRegress< GUM_SCALAR, COMBINEOPERATOR, PROJECTOPERATOR, TerminalNodePolicy >::context__
private

Definition at line 95 of file treeRegress.h.

◆ pxi__

template<typename GUM_SCALAR , template< typename > class COMBINEOPERATOR, template< typename > class PROJECTOPERATOR, template< typename > class TerminalNodePolicy = ExactTerminalNodePolicy>
const Bijection< const DiscreteVariable*, const MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy >* > gum::TreeRegress< GUM_SCALAR, COMBINEOPERATOR, PROJECTOPERATOR, TerminalNodePolicy >::pxi__
private

Definition at line 94 of file treeRegress.h.

◆ vFunc__

template<typename GUM_SCALAR , template< typename > class COMBINEOPERATOR, template< typename > class PROJECTOPERATOR, template< typename > class TerminalNodePolicy = ExactTerminalNodePolicy>
const MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy >* gum::TreeRegress< GUM_SCALAR, COMBINEOPERATOR, PROJECTOPERATOR, TerminalNodePolicy >::vFunc__
private

The function graphs used for the operation.

Definition at line 90 of file treeRegress.h.


The documentation for this class was generated from the following files: