aGrUM  0.14.2
gum::TreeRegress< GUM_SCALAR, COMBINEOPERATOR, PROJECTOPERATOR, TerminalNodePolicy > Class Template Reference

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

#include <agrum/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 52 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 45 of file treeRegress_tpl.h.

References gum::TreeRegress< GUM_SCALAR, COMBINEOPERATOR, PROJECTOPERATOR, TerminalNodePolicy >::~TreeRegress().

49  :
50  __vFunc(qAction),
51  __pxi(pxi) {
52  GUM_CONSTRUCTOR(TreeRegress);
53  }
TreeRegress(const MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy > *qAction, const Bijection< const DiscreteVariable *, const MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy > * > pxi)
Default constructor.
const MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy > * __vFunc
The function graphs used for the operation.
Definition: treeRegress.h:87
const Bijection< const DiscreteVariable *, const MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy > *> __pxi
Definition: treeRegress.h:91
+ Here is the call graph for this function:

◆ ~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 63 of file treeRegress_tpl.h.

Referenced by gum::TreeRegress< GUM_SCALAR, COMBINEOPERATOR, PROJECTOPERATOR, TerminalNodePolicy >::TreeRegress().

63  {
64  GUM_DESTRUCTOR(TreeRegress);
65  }
TreeRegress(const MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy > *qAction, const Bijection< const DiscreteVariable *, const MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy > * > pxi)
Default constructor.
+ Here is the caller graph for this function:

Member Function Documentation

◆ __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 103 of file treeRegress_tpl.h.

References gum::TreeRegress< GUM_SCALAR, COMBINEOPERATOR, PROJECTOPERATOR, TerminalNodePolicy >::__context, gum::TreeRegress< GUM_SCALAR, COMBINEOPERATOR, PROJECTOPERATOR, TerminalNodePolicy >::__pxi, gum::TreeRegress< GUM_SCALAR, COMBINEOPERATOR, PROJECTOPERATOR, TerminalNodePolicy >::__vFunc, gum::TreeOperator< GUM_SCALAR, COMBINEOPERATOR, TerminalNodePolicy >::compute(), gum::DiscreteVariable::domainSize(), gum::InternalNode::nodeVar(), and gum::InternalNode::son().

Referenced by gum::TreeRegress< GUM_SCALAR, COMBINEOPERATOR, PROJECTOPERATOR, TerminalNodePolicy >::compute().

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

◆ 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 80 of file treeRegress_tpl.h.

References gum::TreeRegress< GUM_SCALAR, COMBINEOPERATOR, PROJECTOPERATOR, TerminalNodePolicy >::__vFunc, and gum::TreeRegress< GUM_SCALAR, COMBINEOPERATOR, PROJECTOPERATOR, TerminalNodePolicy >::__xPloreVFunc().

Referenced by gum::TreeOperatorStrategy< GUM_SCALAR >::regress().

80  {
81  MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy >* ret;
82  if (__vFunc->isTerminalNode(__vFunc->root())) {
83  ret = MultiDimFunctionGraph< GUM_SCALAR,
84  TerminalNodePolicy >::getTreeInstance();
85  ret->copy(*__vFunc);
86  } else
87  ret = __xPloreVFunc(__vFunc->root());
88  return ret;
89  }
const MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy > * __vFunc
The function graphs used for the operation.
Definition: treeRegress.h:87
MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy > * __xPloreVFunc(NodeId currentNodeId)
The whatever 1.
+ Here is the call graph for this function:
+ Here is the caller 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

◆ __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

◆ __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 documentation for this class was generated from the following files: