From 182c949713077a9b3bbb361e76591dfcf2a7ad73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ricardo=20Monta=C3=B1ana?= Date: Mon, 28 Nov 2022 23:22:03 +0100 Subject: [PATCH] Enhance code --- debug.cpp | 14 ++++++++++++++ fimdlp/CPPFImdlp.cpp | 14 -------------- fimdlp/cppfimdlp.cpython-310-darwin.so | Bin 93584 -> 93328 bytes fimdlp/mdlp.py | 19 ++++++++----------- sample.py | 7 +------ 5 files changed, 23 insertions(+), 31 deletions(-) create mode 100644 debug.cpp diff --git a/debug.cpp b/debug.cpp new file mode 100644 index 0000000..042092e --- /dev/null +++ b/debug.cpp @@ -0,0 +1,14 @@ +std::cout << "+++++++++++++++++++++++" << std::endl; +for (size_t i = 0; i < y.size(); i++) +{ + printf("(%3.1f, %d)\n", X[indices.at(i)], y[indices.at(i)]); +} +std::cout << "+++++++++++++++++++++++" << std::endl; + +std::cout << "Information Gain:" << std::endl; +auto nc = Metrics::numClasses(y, indices, 0, indices.size()); +for (auto cutPoint = cutIdx.begin(); cutPoint != cutIdx.end(); ++cutPoint) +{ + std::cout << *cutPoint << " -> " << Metrics::informationGain(y, indices, 0, indices.size(), *cutPoint, nc) << std::endl; + // << Metrics::informationGain(y, 0, y.size(), *cutPoint, Metrics::numClasses(y, 0, y.size())) << std::endl; +} \ No newline at end of file diff --git a/fimdlp/CPPFImdlp.cpp b/fimdlp/CPPFImdlp.cpp index b6d671a..d9a49ec 100644 --- a/fimdlp/CPPFImdlp.cpp +++ b/fimdlp/CPPFImdlp.cpp @@ -53,20 +53,6 @@ namespace CPPFImdlp yPrev = y.at(*index); idxPrev = *index; } - std::cout << "Information Gain:" << std::endl; - auto nc = Metrics::numClasses(y, indices, 0, indices.size()); - for (auto cutPoint = cutIdx.begin(); cutPoint != cutIdx.end(); ++cutPoint) - { - std::cout << *cutPoint << " -> " << Metrics::informationGain(y, indices, 0, indices.size(), *cutPoint, nc) << std::endl; - // << Metrics::informationGain(y, 0, y.size(), *cutPoint, Metrics::numClasses(y, 0, y.size())) << std::endl; - } - std::cout << "+++++++++++++++++++++++" << std::endl; - for (size_t i = 0; i < y.size(); i++) - { - printf("(%3.1f, %d)\n", X[indices.at(i)], y[indices.at(i)]); - } - std::cout << "+++++++++++++++++++++++" << std::endl; - return cutPts; } // Argsort from https://stackoverflow.com/questions/1577475/c-sorting-and-keeping-track-of-indexes diff --git a/fimdlp/cppfimdlp.cpython-310-darwin.so b/fimdlp/cppfimdlp.cpython-310-darwin.so index 98de2ce2455f8c7685e54d7390dc8b3b46e5eb2d..887b6f8610f97b4881b0a940e19484ac03e782b0 100755 GIT binary patch delta 13968 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 mxA>2SYMuT6nXBF6zcE%zIB;X8Hotv|_ diff --git a/fimdlp/mdlp.py b/fimdlp/mdlp.py index 8f8399f..38e1e6e 100644 --- a/fimdlp/mdlp.py +++ b/fimdlp/mdlp.py @@ -62,7 +62,6 @@ class FImdlp(TransformerMixin, BaseEstimator): self.X_ = X self.y_ = y self.discretizer_ = CFImdlp() - return self def transform(self, X): @@ -92,7 +91,7 @@ class FImdlp(TransformerMixin, BaseEstimator): raise ValueError( "Shape of input is different from what was seen in `fit`" ) - print("Cut points for each feature in Iris dataset:") + print("Calculating cut points in python for first feature") yz = self.y_.copy() xz = X[:, 0].copy() xz = xz[np.argsort(X[:, 0])] @@ -102,14 +101,12 @@ class FImdlp(TransformerMixin, BaseEstimator): if yz[i] != yz[i - 1] and xz[i - 1] < xz[i]: print(f"Cut point: ({xz[i-1]}, {xz[i]}) ({yz[i-1]}, {yz[i]})") cuts.append((xz[i] + xz[i - 1]) / 2) - for i in range(0, 1): # self.n_features_): - datax = np.sort(X[:, i]) - Xcutpoints = self.discretizer_.cut_points(datax, self.y_) + print("Cuts calculados en python: ", cuts) + print("Cuts calculados en C++") + print("Cut points for each feature in Iris dataset:") + for i in range(0, self.n_features_): + datax = self.X_[np.argsort(self.X_[:, i]), i] + y_ = self.y_[np.argsort(self.X_[:, i])] + Xcutpoints = self.discretizer_.cut_points(datax, y_) print(f"{self.features_[i]:20s}: {Xcutpoints}") - print("Solución cut_points: ", cuts) - print(xz) - print("***********") - for i in range(0, len(yz)): - print(f"({xz[i]}, {yz[i]})") - print("***********") return X diff --git a/sample.py b/sample.py index 0382c30..f95e615 100644 --- a/sample.py +++ b/sample.py @@ -7,9 +7,4 @@ X = data.data y = data.target features = data.feature_names test = FImdlp() -Xcutpoints = test.fit(X, y, features=features).transform(X) -clf = CFImdlp(debug=True) -print("Cut points for feature 0 in Iris dataset:") -print(clf.cut_points(X[:, 0], y)) -print("Xcut") -print(Xcutpoints) +test.fit(X, y, features=features).transform(X)