7 RegisterNode< DecisionTreeNode > DecisionTreeNode::registerModule(
"DecisionTreeNode");
10 nodeType =
"DecisionTreeNode";
26 classLikelihoods = classProbabilities;
27 predictedNodeID = nodeID;
31 if( leftChild == NULL && rightChild == NULL )
36 if( rightChild->
predict( x, classLikelihoods ) ){
40 warningLog <<
"predict(const VectorDouble &x,VectorDouble &classLikelihoods) - Right child failed prediction!" << endl;
45 if( leftChild->
predict( x, classLikelihoods ) ){
49 warningLog <<
"predict(const VectorDouble &x,VectorDouble &classLikelihoods) - Left child failed prediction!" << endl;
59 switch( trainingMode ){
60 case Tree::BEST_ITERATIVE_SPILT:
61 return computeBestSpiltBestIterativeSpilt( numSplittingSteps, trainingData, features, classLabels, featureIndex, minError );
63 case Tree::BEST_RANDOM_SPLIT:
64 return computeBestSpiltBestRandomSpilt( numSplittingSteps, trainingData, features, classLabels, featureIndex, minError );
67 errorLog <<
"computeBestSpilt(...) - Uknown trainingMode!" << endl;
81 classProbabilities.clear();
89 for(UINT i=0; i<depth; i++) tab +=
"\t";
91 stream << tab <<
"depth: " << depth <<
" nodeSize: " << nodeSize <<
" isLeafNode: " << isLeafNode << endl;
92 stream << tab <<
"ClassProbabilities: ";
93 for(UINT i=0; i<classProbabilities.size(); i++){
94 stream << classProbabilities[i] <<
"\t";
98 if( leftChild != NULL ){
99 stream << tab <<
"LeftChild: " << endl;
103 if( rightChild != NULL ){
104 stream << tab <<
"RightChild: " << endl;
121 node->isLeafNode = isLeafNode;
122 node->nodeID = nodeID;
123 node->predictedNodeID = predictedNodeID;
124 node->nodeSize = nodeSize;
125 node->classProbabilities = classProbabilities;
130 node->leftChild->setParent( node );
136 node->rightChild->setParent( node );
151 return (UINT)classProbabilities.size();
155 return classProbabilities;
159 this->nodeSize = nodeSize;
160 this->classProbabilities = classProbabilities;
161 this->isLeafNode =
true;
166 this->nodeSize = nodeSize;
171 this->classProbabilities = classProbabilities;
virtual Node * deepCopyNode() const
UINT getPredictedNodeID() const
bool setLeafNode(const UINT nodeSize, const VectorDouble &classProbabilities)
virtual bool getModel(ostream &stream) const
DecisionTreeNode * deepCopy() const
virtual ~DecisionTreeNode()
virtual Node * deepCopyNode() const
This file implements a DecisionTreeNode, which is a specific base node used for a DecisionTree...
bool setNodeSize(const UINT nodeSize)
virtual bool predict(const VectorDouble &x)
virtual bool predict(const VectorDouble &x, VectorDouble &classLikelihoods)
virtual bool getModel(ostream &stream) const
VectorDouble getClassProbabilities() const
UINT getNumClasses() const
bool setClassProbabilities(const VectorDouble &classProbabilities)
static Node * createInstanceFromString(string const &nodeType)
virtual bool computeBestSpilt(const UINT &trainingMode, const UINT &numSplittingSteps, const ClassificationData &trainingData, const vector< UINT > &features, const vector< UINT > &classLabels, UINT &featureIndex, double &minError)