27 #ifndef ROOT_TMVA_ExpectedErrorPruneTool
28 #define ROOT_TMVA_ExpectedErrorPruneTool
55 class ExpectedErrorPruneTool :
public IPruneTool {
57 ExpectedErrorPruneTool( );
58 virtual ~ExpectedErrorPruneTool( );
61 virtual PruningInfo* CalculatePruningInfo( DecisionTree* dt,
const IPruneTool::EventSample* testEvents = NULL,
62 Bool_t isAutomatic = kFALSE );
66 inline void SetPruneStrengthIncrement( Double_t dalpha ) { fDeltaPruneStrength = dalpha; }
69 void FindListOfNodes( DecisionTreeNode* node );
70 Double_t GetNodeError( DecisionTreeNode* node )
const;
71 Double_t GetSubTreeError( DecisionTreeNode* node )
const;
72 Int_t CountNodes( DecisionTreeNode* node, Int_t icount = 0 );
74 Double_t fDeltaPruneStrength;
75 Double_t fNodePurityLimit;
76 std::vector<DecisionTreeNode*> fPruneSequence;
78 mutable MsgLogger* fLogger;
79 MsgLogger& Log()
const {
return *fLogger; }
82 inline Int_t ExpectedErrorPruneTool::CountNodes( DecisionTreeNode* node, Int_t icount ) {
83 DecisionTreeNode* l = (DecisionTreeNode*)node->GetLeft();
84 DecisionTreeNode* r = (DecisionTreeNode*)node->GetRight();
85 Int_t counter = icount + 1;
86 if(!(node->IsTerminal()) && l != NULL && r != NULL) {
87 counter = CountNodes(l,counter);
88 counter = CountNodes(r,counter);