#ifndef CPPFIMDLP_H #define CPPFIMDLP_H #include "typesFImdlp.h" #include #include #include #include "Metrics.h" #include "Discretizer.h" namespace mdlp { class CPPFImdlp : public Discretizer { public: CPPFImdlp() = default; CPPFImdlp(size_t min_length_, int max_depth_, float proposed); virtual ~CPPFImdlp() = default; void fit(samples_t& X_, labels_t& y_) override; inline int get_depth() const { return depth; }; protected: size_t min_length = 3; int depth = 0; int max_depth = numeric_limits::max(); float proposed_cuts = 0; indices_t indices = indices_t(); samples_t X = samples_t(); labels_t y = labels_t(); Metrics metrics = Metrics(y, indices); size_t num_cut_points = numeric_limits::max(); static indices_t sortIndices(samples_t&, labels_t&); void computeCutPoints(size_t, size_t, int); void resizeCutPoints(); bool mdlp(size_t, size_t, size_t); size_t getCandidate(size_t, size_t); size_t compute_max_num_cut_points() const; pair valueCutPoint(size_t, size_t, size_t); }; } #endif