From b1f5d337fcc2f081cc7ff6b3fb1672e75b523511 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ricardo=20Monta=C3=B1ana?= Date: Fri, 2 Dec 2022 23:36:18 +0100 Subject: [PATCH] Refactor some methods --- fimdlp/CPPFImdlp.cpp | 7 +++-- fimdlp/CPPFImdlp.h | 2 +- fimdlp/cfimdlp.pyx | 5 +-- fimdlp/cppfimdlp.cpython-310-darwin.so | Bin 124968 -> 124968 bytes sample.py | 42 ++++++++++++------------- 5 files changed, 29 insertions(+), 27 deletions(-) diff --git a/fimdlp/CPPFImdlp.cpp b/fimdlp/CPPFImdlp.cpp index 416e101..5bd7829 100644 --- a/fimdlp/CPPFImdlp.cpp +++ b/fimdlp/CPPFImdlp.cpp @@ -32,17 +32,17 @@ namespace mdlp { { return xDiscretized; } - void CPPFImdlp::fit(samples& X_, labels& y_) + CPPFImdlp& CPPFImdlp::fit(samples& X_, labels& y_) { X = X_; y = y_; if (X.size() != y.size()) { std::cerr << "X and y must have the same size" << std::endl; - return; + return *this; } if (X.size() == 0) { std::cerr << "X and y must have at least one element" << std::endl; - return; + return *this; } this->indices = sortIndices(X_); this->xDiscretized = labels(X.size(), -1); @@ -55,6 +55,7 @@ namespace mdlp { } filterCutPoints(); applyCutPoints(); + return *this; } labels& CPPFImdlp::transform(samples& X_) { diff --git a/fimdlp/CPPFImdlp.h b/fimdlp/CPPFImdlp.h index 9dc01ad..08ac0ff 100644 --- a/fimdlp/CPPFImdlp.h +++ b/fimdlp/CPPFImdlp.h @@ -31,7 +31,7 @@ namespace mdlp { cutPoints_t getCutPoints(); labels getDiscretizedValues(); void debugPoints(samples&, labels&); - void fit(samples&, labels&); + CPPFImdlp& fit(samples&, labels&); labels& transform(samples&); }; } diff --git a/fimdlp/cfimdlp.pyx b/fimdlp/cfimdlp.pyx index 61534df..b4d553b 100644 --- a/fimdlp/cfimdlp.pyx +++ b/fimdlp/cfimdlp.pyx @@ -11,7 +11,7 @@ cdef extern from "CPPFImdlp.h" namespace "mdlp": cdef cppclass CPPFImdlp: CPPFImdlp() except + CPPFImdlp(bool, int, bool) except + - void fit(vector[float]&, vector[int]&) + CPPFImdlp& fit(vector[float]&, vector[int]&) vector[int] transform(vector[float]&) vector[int] getDiscretizedValues() vector[CutPointBody] getCutPoints() @@ -34,12 +34,13 @@ cdef class CFImdlp: del self.thisptr def fit(self, X, y): self.thisptr.fit(X, y) + return self def transform(self, X): return self.thisptr.transform(X) def get_discretized_values(self): return self.thisptr.getDiscretizedValues() def get_cut_points(self): - return self.thisptr.getCutPoints() + return self.thisptr.getCutPoints() def debug_points(self, X, y): return self.thisptr.debugPoints(X, y) \ No newline at end of file diff --git a/fimdlp/cppfimdlp.cpython-310-darwin.so b/fimdlp/cppfimdlp.cpython-310-darwin.so index 314839fccf78775936216b15d766c25686e3bbd5..4cef9e907a51b04880225ebb1c4c589ba65f19ed 100755 GIT binary patch delta 16783 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 BY?=T7 diff --git a/sample.py b/sample.py index cf2f926..ce2db6c 100644 --- a/sample.py +++ b/sample.py @@ -66,28 +66,28 @@ features = data.feature_names # test.transform(X) # test.get_cut_points() -test = CFImdlp(debug=True, proposed=False) +test = CFImdlp(debug=False, proposed=False) # # k = test.cut_points(X[:, 0], y) # # print(k) # # k = test.cut_points_ant(X[:, 0], y) # # print(k) # # test.debug_points(X[:, 0], y) -X = [5.7, 5.3, 5.2, 5.1, 5.0, 5.6, 5.1, 6.0, 5.1, 5.9] -indices = [4, 3, 6, 8, 2, 1, 5, 0, 9, 7] -y = [1, 1, 1, 1, 1, 2, 2, 2, 2, 2] +# X = [5.7, 5.3, 5.2, 5.1, 5.0, 5.6, 5.1, 6.0, 5.1, 5.9] +# indices = [4, 3, 6, 8, 2, 1, 5, 0, 9, 7] +# y = [1, 1, 1, 1, 1, 2, 2, 2, 2, 2] # # To check # indices2 = np.argsort(X) # Xs = np.array(X)[indices2] # ys = np.array(y)[indices2] -# test.fit(X[:, 0], y) -test.fit(X, y) +test.fit(X[:, 0], y) +# test.fit(X, y) result = test.get_cut_points() -for item in result: - print( - f"*Class={item['classNumber']} - ({item['start']:3d}, {item['end']:3d})" - f" -> ({item['fromValue']:3.1f}, {item['toValue']:3.1f}]" - ) +# for item in result: +# print( +# f"Class={item['classNumber']} - ({item['start']:3d}, {item['end']:3d})" +# f" -> ({item['fromValue']:3.1f}, {item['toValue']:3.1f}]" +# ) print(test.get_discretized_values()) # print(Xs, ys) @@ -102,13 +102,13 @@ print(test.get_discretized_values()) # print(indices) # print(np.array(X)[indices]) -# X = np.array( -# [ -# [5.1, 3.5, 1.4, 0.2], -# [5.2, 3.0, 1.4, 0.2], -# [5.3, 3.2, 1.3, 0.2], -# [5.3, 3.1, 1.5, 0.2], -# ] -# ) -# y = np.array([0, 0, 0, 1]) -# test.fit(X, y).transform(X) +X = np.array( + [ + [5.1, 3.5, 1.4, 0.2], + [5.2, 3.0, 1.4, 0.2], + [5.3, 3.2, 1.3, 0.2], + [5.3, 3.1, 1.5, 0.2], + ] +) +y = np.array([0, 0, 0, 1]) +print(test.fit(X[:, 0], y).transform(X[:, 0]))