From 9ce10131d6a362f59b7b48c1aef6ff05c602ee81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ricardo=20Monta=C3=B1ana?= Date: Sun, 4 Dec 2022 01:45:32 +0100 Subject: [PATCH] Refactor tests --- fimdlp/CPPFImdlp.cpp | 24 ++++-- fimdlp/CPPFImdlp.h | 3 +- fimdlp/cppfimdlp.cpython-310-darwin.so | Bin 124408 -> 269020 bytes fimdlp/testcpp/FImdlp_unittest.cc | 102 +++++++++++++------------ sample.py | 20 +++-- 5 files changed, 82 insertions(+), 67 deletions(-) diff --git a/fimdlp/CPPFImdlp.cpp b/fimdlp/CPPFImdlp.cpp index 3e21d38..e00b8d7 100644 --- a/fimdlp/CPPFImdlp.cpp +++ b/fimdlp/CPPFImdlp.cpp @@ -175,7 +175,10 @@ namespace mdlp { printf(">idx=%lu -> Prev(%3.1f, %d) Pivot(%3.1f, %d) Cur(%3.1f, %d) \n", idx, xPrev, yPrev, xPivot, yPivot, xCur, yCur); } while (idx < numElements && xCur == xPivot); - if (yPivot == -1 || yPrev != yCur) { + // Check if the class changed and there are more than 1 element + if ((idx - start > 1) && (yPivot == -1 || yPrev != yCur)) { + // Must we add the entropy criteria here? + // if (totalEntropy - (entropyLeft + entropyRight) < 0) { Accept cut point } cutPoint.start = start; cutPoint.end = idx; start = idx; @@ -201,9 +204,11 @@ namespace mdlp { printf("Final Cutpoint idx=%lu Cur(%3.1f, %d) Prev(%3.1f, %d) Pivot(%3.1f, %d) = (%3.1g, %3.1g] \n", idx, xCur, yCur, xPrev, yPrev, xPivot, yPivot, cutPoint.fromValue, cutPoint.toValue); cutPts.push_back(cutPoint); } - if (debug) + if (debug) { + std::cout << "Entropy of the dataset: " << Metrics::entropy(y, indices, 0, numElements + 1, numClasses) << std::endl; for (auto cutPt : cutPts) - std::cout << "Proposed: Cut point: " << cutPt; + std::cout << "Entropy: " << Metrics::entropy(y, indices, cutPt.start, cutPt.end, numClasses) << " :Proposed: Cut point: " << cutPt; + } cutPoints = cutPts; } void CPPFImdlp::computeCutPointsOriginal() @@ -219,8 +224,11 @@ namespace mdlp { yPrev = y[idx]; for (index = 0; index < size_t(indices.size()) - 1; index++) { idx = indices[index]; - // Definition 2 Cut points are always on boundaries - if (y[idx] != yPrev && xPrev < X[idx]) { + // Definition 2 Cut points are always on class boundaries && + // there are more than 1 items in the interval + if (y[idx] != yPrev && xPrev < X[idx] && idxPrev != index - 1) { + // Must we add the entropy criteria here? + // if (totalEntropy - (entropyLeft + entropyRight) < 0) { Accept cut point } if (first) { first = false; cutPoint.fromValue = std::numeric_limits::lowest(); @@ -246,9 +254,11 @@ namespace mdlp { } else cutPts.back().toValue = std::numeric_limits::max(); cutPts.back().end = X.size(); - if (debug) + if (debug) { + std::cout << "Entropy of the dataset: " << Metrics::entropy(y, indices, 0, indices.size(), numClasses) << std::endl; for (auto cutPt : cutPts) - std::cout << "Original: Cut point: " << cutPt; + std::cout << "Entropy: " << Metrics::entropy(y, indices, cutPt.start, cutPt.end, numClasses) << ": Original: Cut point: " << cutPt; + } cutPoints = cutPts; } // Argsort from https://stackoverflow.com/questions/1577475/c-sorting-and-keeping-track-of-indexes diff --git a/fimdlp/CPPFImdlp.h b/fimdlp/CPPFImdlp.h index 97d7c35..5f29fb8 100644 --- a/fimdlp/CPPFImdlp.h +++ b/fimdlp/CPPFImdlp.h @@ -4,7 +4,7 @@ #include namespace mdlp { class CPPFImdlp { - private: + protected: bool proposed; // proposed algorithm or original algorithm int precision; bool debug; @@ -16,7 +16,6 @@ namespace mdlp { int numClasses; cutPoints_t cutPoints; - protected: void setCutPoints(cutPoints_t); static indices_t sortIndices(samples&); void computeCutPointsOriginal(); diff --git a/fimdlp/cppfimdlp.cpython-310-darwin.so b/fimdlp/cppfimdlp.cpython-310-darwin.so index 679347e3fabc45a7b7448c9ad0b1b7af287892a9..2c859a9b402d62a94347073f0e7e7210cf52cc66 100755 GIT binary patch literal 269020 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≻9~{Q%-O?6XEOzFa1{3CxJRx{h3uWQ{eHUzoyW9 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 delta 34222 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

+2klvk4G&rFjwaR3!Ui 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 p-W7T| diff --git a/fimdlp/testcpp/FImdlp_unittest.cc b/fimdlp/testcpp/FImdlp_unittest.cc index 67744d7..d14a49d 100644 --- a/fimdlp/testcpp/FImdlp_unittest.cc +++ b/fimdlp/testcpp/FImdlp_unittest.cc @@ -2,15 +2,9 @@ #include "../Metrics.h" #include "../CPPFImdlp.h" namespace mdlp { - class TestMetrics : public CPPFImdlp, public testing::Test { + class TestFImdlp : public CPPFImdlp, public testing::Test { public: - TestMetrics() : CPPFImdlp(true, 6, true) {} - indices_t indices; // sorted indices to use with X and y - samples X; - labels y; - samples xDiscretized; - int numClasses; - float precision_test = 0.000001; + TestFImdlp() : CPPFImdlp(true, 6, true) {} void SetUp() { // 5.0, 5.1, 5.1, 5.1, 5.2, 5.3, 5.6, 5.7, 5.9, 6.0] @@ -19,7 +13,19 @@ namespace mdlp { y = { 1, 1, 1, 1, 1, 2, 2, 2, 2, 2 }; fit(X, y); } - void check_sorted_vector(samples& X_, indices_t indices_) + void initCutPoints() + { + setCutPoints(cutPoints_t()); + } + void initIndices() + { + indices = indices_t(); + } + void initDiscretized() + { + xDiscretized = labels(); + } + void checkSortedVector(samples& X_, indices_t indices_) { X = X_; indices = indices_; @@ -32,113 +38,109 @@ namespace mdlp { } } }; - // - TEST_F(TestMetrics, SortIndices) + TEST_F(TestFImdlp, SortIndices) { X = { 5.7, 5.3, 5.2, 5.1, 5.0, 5.6, 5.1, 6.0, 5.1, 5.9 }; - indices_t indices = { 4, 3, 6, 8, 2, 1, 5, 0, 9, 7 }; - check_sorted_vector(X, indices); + indices = { 4, 3, 6, 8, 2, 1, 5, 0, 9, 7 }; + checkSortedVector(X, indices); X = { 5.77, 5.88, 5.99 }; indices = { 0, 1, 2 }; - check_sorted_vector(X, indices); + checkSortedVector(X, indices); X = { 5.33, 5.22, 5.11 }; indices = { 2, 1, 0 }; - check_sorted_vector(X, indices); + checkSortedVector(X, indices); } - TEST_F(TestMetrics, EvaluateCutPoint) + TEST_F(TestFImdlp, EvaluateCutPoint) { cutPoint_t rest, candidate; - rest.start = 0; - rest.end = 10; - rest.classNumber = -1; - rest.fromValue = -1; - rest.toValue = 1000; - candidate.start = 0; - candidate.end = 4; - candidate.fromValue = -1; - candidate.toValue = 5.15; - candidate.classNumber = -1; + rest = { 0, 10, -1, -1, 1000 }; + candidate = { 0, 4, -1, -1, 5.15 }; EXPECT_FALSE(evaluateCutPoint(rest, candidate)); } - TEST_F(TestMetrics, ComputeCutPointsOriginal) + TEST_F(TestFImdlp, ComputeCutPointsOriginal) { cutPoints_t computed, expected; + int expectedSize = 3; expected = { { 0, 4, -1, -3.4028234663852886e+38, 5.15 }, { 4, 6, -1, 5.15, 5.45 }, - { 6, 7, -1, 5.45, 5.65 }, { 7, 10, -1, 5.65, 3.4028234663852886e+38 } + { 6, 10, -1, 5.45, 3.4028234663852886e+38 } }; + setCutPoints(cutPoints_t()); computeCutPointsOriginal(); computed = getCutPoints(); - EXPECT_EQ(computed.size(), 4); - for (auto i = 0; i < 4; i++) { + EXPECT_EQ(computed.size(), expectedSize); + for (auto i = 0; i < expectedSize; i++) { EXPECT_EQ(computed[i].start, expected[i].start); EXPECT_EQ(computed[i].end, expected[i].end); EXPECT_EQ(computed[i].classNumber, expected[i].classNumber); - EXPECT_NEAR(computed[i].fromValue, expected[i].fromValue, precision_test); - EXPECT_NEAR(computed[i].toValue, expected[i].toValue, precision_test); + EXPECT_NEAR(computed[i].fromValue, expected[i].fromValue, precision); + EXPECT_NEAR(computed[i].toValue, expected[i].toValue, precision); } } - TEST_F(TestMetrics, ComputeCutPointsOriginalGCase) + TEST_F(TestFImdlp, ComputeCutPointsOriginalGCase) { cutPoints_t computed, expected; expected = { { 0, 4, -1, -3.4028234663852886e+38, 3.4028234663852886e+38 }, }; + int expectedSize = 1; X = { 0, 1, 2, 2 }; y = { 1, 1, 1, 2 }; fit(X, y); computeCutPointsOriginal(); computed = getCutPoints(); - EXPECT_EQ(computed.size(), 1); - for (auto i = 0; i < 1; i++) { + EXPECT_EQ(computed.size(), expectedSize); + for (auto i = 0; i < expectedSize; i++) { EXPECT_EQ(computed[i].start, expected[i].start); EXPECT_EQ(computed[i].end, expected[i].end); EXPECT_EQ(computed[i].classNumber, expected[i].classNumber); - EXPECT_NEAR(computed[i].fromValue, expected[i].fromValue, precision_test); - EXPECT_NEAR(computed[i].toValue, expected[i].toValue, precision_test); + EXPECT_NEAR(computed[i].fromValue, expected[i].fromValue, precision); + EXPECT_NEAR(computed[i].toValue, expected[i].toValue, precision); } } - TEST_F(TestMetrics, ComputeCutPointsProposed) + TEST_F(TestFImdlp, ComputeCutPointsProposed) { cutPoints_t computed, expected; expected = { - { 0, 4, -1, -3.4028234663852886e+38, 5.1 }, { 4, 5, -1, 5.1, 5.2 }, - { 5, 6, -1, 5.2, 5.4 }, { 6, 9, -1, 5.4, 5.85 }, + { 0, 4, -1, -3.4028234663852886e+38, 5.1 }, { 4, 6, -1, 5.1, 5.4 }, + { 6, 9, -1, 5.4, 5.85 }, { 9, 10, -1, 5.85, 3.4028234663852886e+38 } }; + int expectedSize = 4; computeCutPointsProposed(); computed = getCutPoints(); - EXPECT_EQ(computed.size(), 5); - for (auto i = 0; i < 5; i++) { + EXPECT_EQ(computed.size(), expectedSize); + for (auto i = 0; i < expectedSize; i++) { EXPECT_EQ(computed[i].start, expected[i].start); EXPECT_EQ(computed[i].end, expected[i].end); EXPECT_EQ(computed[i].classNumber, expected[i].classNumber); - EXPECT_NEAR(computed[i].fromValue, expected[i].fromValue, precision_test); - EXPECT_NEAR(computed[i].toValue, expected[i].toValue, precision_test); + EXPECT_NEAR(computed[i].fromValue, expected[i].fromValue, precision); + EXPECT_NEAR(computed[i].toValue, expected[i].toValue, precision); } } - TEST_F(TestMetrics, ComputeCutPointsProposedGCase) + TEST_F(TestFImdlp, ComputeCutPointsProposedGCase) { cutPoints_t computed, expected; expected = { { 0, 3, -1, -3.4028234663852886e+38, 1.5 }, { 3, 4, -1, 1.5, 3.4028234663852886e+38 } }; + int expectedSize = 2; X = { 0, 1, 2, 2 }; y = { 1, 1, 1, 2 }; fit(X, y); computeCutPointsProposed(); computed = getCutPoints(); - EXPECT_EQ(computed.size(), 2); - for (auto i = 0; i < 1; i++) { + EXPECT_EQ(computed.size(), expectedSize); + for (auto i = 0; i < expectedSize; i++) { EXPECT_EQ(computed[i].start, expected[i].start); EXPECT_EQ(computed[i].end, expected[i].end); EXPECT_EQ(computed[i].classNumber, expected[i].classNumber); - EXPECT_NEAR(computed[i].fromValue, expected[i].fromValue, precision_test); - EXPECT_NEAR(computed[i].toValue, expected[i].toValue, precision_test); + EXPECT_NEAR(computed[i].fromValue, expected[i].fromValue, precision); + EXPECT_NEAR(computed[i].toValue, expected[i].toValue, precision); } } - TEST_F(TestMetrics, ApplyCutPoints) + TEST_F(TestFImdlp, ApplyCutPoints) { cutPoints_t expected = { { 0, 4, 17, -3.4028234663852886e+38, 5.1 }, { 4, 6, 31, 5.1, 5.4 }, diff --git a/sample.py b/sample.py index ffb8f01..36d4699 100644 --- a/sample.py +++ b/sample.py @@ -69,13 +69,14 @@ for proposed in [True, False]: X = data.data y = data.target print("*** Proposed: ", proposed) - test = CFImdlp(debug=False, proposed=proposed) + test = CFImdlp(debug=True, proposed=proposed) test.fit(X[:, 0], 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}]" + f"Class={item['classNumber']} - ({item['start']:3d}, " + f"{item['end']:3d}) -> ({item['fromValue']:3.1f}, " + f"{item['toValue']:3.1f}]" ) print(test.get_discretized_values()) print("+" * 40) @@ -114,11 +115,14 @@ for proposed in [True, False]: # # 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] +# X = [5.7, 5.3, 5.2, 5.1, 5.0, 5.6, 5.1, 6.0, 5.1, 5.9] +# y = [1, 1, 1, 1, 1, 2, 2, 2, 2, 2] +# indices = [4, 3, 6, 8, 2, 1, 5, 0, 9, 7] +# clf = CFImdlp(debug=True, proposed=False) +# clf.fit(X, y) +# print(clf.get_cut_points()) # 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] - +# Xs = np.array(X)[indices2] +# ys = np.array(y)[indices2]