cart-elc

Source code for CART-ELC
git clone git://git.laack.co/cart-elc.git
Log | Files | Refs | README | LICENSE

ELCClassifier.h (1366B)


      1 #include "TreeNode.h"
      2 #include <vector>
      3 #include <iostream>
      4 #include "queue"
      5 #include "mutex"
      6 
      7 class ELCClassifier{
      8 	public:
      9 		ELCClassifier(int depth, int linearCombinations, int maxThreadCount = 100, std::string objFunction = "gini");
     10 		void fit(float* X, int samples, int* y, int features); 
     11 		int* predict(float* X, int samples, int features);
     12 		std::string getDot();
     13         ~ELCClassifier(); 
     14 		TreeNode* bestSplit(float* X, int samples, int* y, int features);
     15 		int getSplits();
     16 
     17 	private:
     18 		int depth;
     19 		int featureCount = -1;
     20 		int linearCombinations = 0;
     21 		TreeNode* splittingTree = nullptr;
     22 		TreeNode* recurse(float* X, int samples, int* y, int features, int depth);
     23 		int primaryClass(int* y, int labelCount);
     24 		void deleteTree(TreeNode* node);
     25 		TreeNode* bestSplitHelper(float* allSamples, int* y, int sampleCount, int features, std::vector<int> current, int currentIndex, float* bestGini, bool initCall, std::queue<std::vector<int>>& queuedSelections, bool finalPass);
     26 		TreeNode* const bestNodeForSelectSamples(float* allSamples, int* y, int sampleCount, int features, std::vector<int> specifiedSamples, int currentFeature, float* bestGini, std::vector<int> selectedFeatures);
     27 		int maxThreads = 1;
     28 		std::string objectiveFunction = "gini";
     29 		bool homogeneous(int* y, int samples);
     30 };
     31 
     32 struct combinations{
     33 	int* combs;
     34 	int rows;
     35 	int columns;
     36 };
     37