]> git.donarmstrong.com Git - mothur.git/blob - abstractdecisiontree.hpp
fixes while testing 1.33.0
[mothur.git] / abstractdecisiontree.hpp
1 //
2 //  abstractdecisiontree.hpp
3 //  rrf-fs-prototype
4 //
5 //  Created by Abu Zaher Faridee on 7/22/12.
6 //  Copyright (c) 2012 Schloss Lab. All rights reserved.
7 //
8
9 #ifndef RF_ABSTRACTDECISIONTREE_HPP
10 #define RF_ABSTRACTDECISIONTREE_HPP
11
12 #include "mothurout.h"
13 #include "macros.h"
14 #include "rftreenode.hpp"
15
16 #define DEBUG_MODE
17
18 /**************************************************************************************************/
19
20 struct IntPairVectorSorter{
21     bool operator() (const pair<int, int>& firstPair, const pair<int, int>& secondPair) {
22         return firstPair.first < secondPair.first;
23     }
24 };
25
26 /**************************************************************************************************/
27
28 class AbstractDecisionTree{
29   
30 public:
31   
32     AbstractDecisionTree(vector<vector<int> >& baseDataSet,
33                            vector<int> globalDiscardedFeatureIndices, 
34                            OptimumFeatureSubsetSelector optimumFeatureSubsetSelector, 
35                            string treeSplitCriterion);    
36     virtual ~AbstractDecisionTree(){}
37     
38   
39 protected:
40   
41     virtual int createBootStrappedSamples();
42     virtual int getMinEntropyOfFeature(vector<int> featureVector, vector<int> outputVector, double& minEntropy, int& featureSplitValue, double& intrinsicValue);
43         virtual int getBestSplitAndMinEntropy(vector< pair<int, int> > featureOutputPairs, vector<int> splitPoints, double& minEntropy, int& minEntropyIndex, double& relatedIntrinsicValue);
44     virtual double calcIntrinsicValue(int numLessThanValueAtSplitPoint, int numGreaterThanValueAtSplitPoint, int numSamples);
45     virtual double calcSplitEntropy(vector< pair<int, int> > featureOutputPairs, int splitIndex, int numOutputClasses, bool);
46
47     virtual int getSplitPopulation(RFTreeNode* node, vector< vector<int> >& leftChildSamples, vector< vector<int> >& rightChildSamples);
48     virtual bool checkIfAlreadyClassified(RFTreeNode* treeNode, int& outputClass);
49
50     vector< vector<int> >& baseDataSet;
51     int numSamples;
52     int numFeatures;
53     int numOutputClasses;
54     vector<int> outputClasses;
55     
56     vector< vector<int> > bootstrappedTrainingSamples;
57     vector<int> bootstrappedTrainingSampleIndices;
58     vector< vector<int> > bootstrappedTestSamples;
59     vector<int> bootstrappedTestSampleIndices;
60     
61     vector<vector<int> > testSampleFeatureVectors;
62     
63     RFTreeNode* rootNode;
64     int nodeIdCount;
65     map<int, int> nodeMisclassificationCounts;
66     vector<int> globalDiscardedFeatureIndices;
67     int optimumFeatureSubsetSize;
68     string treeSplitCriterion;
69     MothurOut* m;
70   
71 private:
72     
73   
74 };
75 /**************************************************************************************************/
76
77 #endif
78
79