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