aGrUM  0.20.3
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 54 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 47 of file treeRegress_tpl.h.

50  :
51  _vFunc_(qAction),
52  _pxi_(pxi) {
53  GUM_CONSTRUCTOR(TreeRegress);
54  }
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: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 63 of file treeRegress_tpl.h.

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

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 call 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 96 of file treeRegress_tpl.h.

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

97  {
98  const InternalNode* currentNode = _vFunc_->node(currentNodeId);
99 
100  std::vector< MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy >* > varbucket;
101 
102  for (Idx moda = 0; moda < currentNode->nodeVar()->domainSize(); ++moda) {
103  MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy >* vpxi = nullptr;
104  _context_.insert(currentNode->nodeVar(), moda);
105  if (_vFunc_->isTerminalNode(currentNode->son(moda))) {
106  GUM_SCALAR value = _vFunc_->nodeValue(currentNode->son(moda));
107  if (value) {
109  vpxi->manager()->setRootNode(vpxi->manager()->addTerminalNode(value));
110  }
111  } else {
112  vpxi = _xPloreVFunc_(currentNode->son(moda));
113  }
114 
115  if (vpxi != nullptr) {
116  TreeOperator< GUM_SCALAR, COMBINEOPERATOR > combinope(vpxi,
117  _pxi_.second(currentNode->nodeVar()),
118  _context_);
119  varbucket.push_back(combinope.compute());
120  }
121  delete vpxi;
122  _context_.erase(currentNode->nodeVar());
123  }
124 
125  if (varbucket.empty()) return nullptr;
126 
127  MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy >* vp = varbucket.back();
128  varbucket.pop_back();
129  while (!varbucket.empty()) {
130  MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy >* temp = vp;
131  TreeOperator< GUM_SCALAR, PROJECTOPERATOR > projope(vp, varbucket.back());
132  vp = projope.compute();
133  delete temp;
134  temp = varbucket.back();
135  varbucket.pop_back();
136  delete temp;
137  }
138 
139  return vp;
140  }
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:87
HashTable< const DiscreteVariable *, Idx > _context_
Definition: treeRegress.h:91
static MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy > * getTreeInstance()
Returns an arborescent instance.
const Bijection< const DiscreteVariable *, const MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy > *> _pxi_
Definition: treeRegress.h:90
+ Here is the call 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 77 of file treeRegress_tpl.h.

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

77  {
78  MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy >* ret;
79  if (_vFunc_->isTerminalNode(_vFunc_->root())) {
81  ret->copy(*_vFunc_);
82  } else
83  ret = _xPloreVFunc_(_vFunc_->root());
84  return ret;
85  }
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:87
static MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy > * getTreeInstance()
Returns an arborescent instance.
+ 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 91 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 90 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 87 of file treeRegress.h.


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