Fix mistakes in tests

This commit is contained in:
2024-01-08 00:00:11 +01:00
parent 4d7e1fbd98
commit 84ae72630d

View File

@@ -15,13 +15,13 @@ TEST_CASE("Test Python Classifiers score", "[PyClassifiers]")
{ {
map <pair<std::string, std::string>, float> scores = { map <pair<std::string, std::string>, float> scores = {
// Diabetes // Diabetes
{{"diabetes", "STree"}, 0}, {{"diabetes", "ODTE"}, 0.84635}, {{"diabetes", "SVC"}, 0}, {{"diabetes", "RandomForest"}, 1.0}, {{"diabetes", "STree"}, 0.81641}, {{"diabetes", "ODTE"}, 0.84635}, {{"diabetes", "SVC"}, 0.76823}, {{"diabetes", "RandomForest"}, 1.0},
// Ecoli // Ecoli
{{"ecoli", "STree"}, 0}, {{"ecoli", "ODTE"}, 0.84821}, {{"ecoli", "SVC"}, 0.}, {{"ecoli", "RandomForest"}, 1.0}, {{"ecoli", "STree"}, 0.8125}, {{"ecoli", "ODTE"}, 0.84821}, {{"ecoli", "SVC"}, 0.89583}, {{"ecoli", "RandomForest"}, 1.0},
// Glass // Glass
{{"glass", "STree"}, 0}, {{"glass", "ODTE"}, 0.77103}, {{"glass", "SVC"}, 0}, {{"glass", "RandomForest"}, 1.0}, {{"glass", "STree"}, 0.57009}, {{"glass", "ODTE"}, 0.77103}, {{"glass", "SVC"}, 0.35514}, {{"glass", "RandomForest"}, 1.0},
// Iris // Iris
{{"iris", "STree"}, 0}, {{"iris", "ODTE"}, 0.98667}, {{"iris", "SVC"}, 0}, {{"iris", "RandomForest"}, 1.0}, {{"iris", "STree"}, 0.99333}, {{"iris", "ODTE"}, 0.98667}, {{"iris", "SVC"}, 0.97333}, {{"iris", "RandomForest"}, 1.0},
}; };
std::string file_name = GENERATE("glass", "iris", "ecoli", "diabetes"); std::string file_name = GENERATE("glass", "iris", "ecoli", "diabetes");
@@ -30,8 +30,8 @@ TEST_CASE("Test Python Classifiers score", "[PyClassifiers]")
SECTION("Test STree classifier (" + file_name + ")") SECTION("Test STree classifier (" + file_name + ")")
{ {
auto clf = pywrap::STree(); auto clf = pywrap::STree();
clf.fit(raw.Xv, raw.yv, raw.featuresv, raw.classNamev, raw.statesv); clf.fit(raw.Xt, raw.yt, raw.featurest, raw.classNamet, raw.statest);
auto score = clf.score(raw.Xv, raw.yv); auto score = clf.score(raw.Xt, raw.yt);
REQUIRE(score == Catch::Approx(scores[{file_name, "STree"}]).epsilon(raw.epsilon)); REQUIRE(score == Catch::Approx(scores[{file_name, "STree"}]).epsilon(raw.epsilon));
} }
SECTION("Test ODTE classifier (" + file_name + ")") SECTION("Test ODTE classifier (" + file_name + ")")
@@ -39,15 +39,13 @@ TEST_CASE("Test Python Classifiers score", "[PyClassifiers]")
auto clf = pywrap::ODTE(); auto clf = pywrap::ODTE();
clf.fit(raw.Xt, raw.yt, raw.featurest, raw.classNamet, raw.statest); clf.fit(raw.Xt, raw.yt, raw.featurest, raw.classNamet, raw.statest);
auto score = clf.score(raw.Xt, raw.yt); auto score = clf.score(raw.Xt, raw.yt);
scores[{file_name, "ODTE"}] = score;
REQUIRE(score == Catch::Approx(scores[{file_name, "ODTE"}]).epsilon(raw.epsilon)); REQUIRE(score == Catch::Approx(scores[{file_name, "ODTE"}]).epsilon(raw.epsilon));
} }
SECTION("Test SVC classifier (" + file_name + ")") SECTION("Test SVC classifier (" + file_name + ")")
{ {
auto clf = pywrap::SVC(); auto clf = pywrap::SVC();
clf.fit(raw.Xv, raw.yv, raw.featuresv, raw.classNamev, raw.statesv); clf.fit(raw.Xt, raw.yt, raw.featurest, raw.classNamet, raw.statest);
auto score = clf.score(raw.Xv, raw.yv); auto score = clf.score(raw.Xt, raw.yt);
scores[{file_name, "SVC"}] = score;
REQUIRE(score == Catch::Approx(scores[{file_name, "SVC"}]).epsilon(raw.epsilon)); REQUIRE(score == Catch::Approx(scores[{file_name, "SVC"}]).epsilon(raw.epsilon));
} }
SECTION("Test RandomForest classifier (" + file_name + ")") SECTION("Test RandomForest classifier (" + file_name + ")")
@@ -55,26 +53,22 @@ TEST_CASE("Test Python Classifiers score", "[PyClassifiers]")
auto clf = pywrap::RandomForest(); auto clf = pywrap::RandomForest();
clf.fit(raw.Xt, raw.yt, raw.featurest, raw.classNamet, raw.statest); clf.fit(raw.Xt, raw.yt, raw.featurest, raw.classNamet, raw.statest);
auto score = clf.score(raw.Xt, raw.yt); auto score = clf.score(raw.Xt, raw.yt);
scores[{file_name, "RandomForest"}] = score;
REQUIRE(score == Catch::Approx(scores[{file_name, "RandomForest"}]).epsilon(raw.epsilon)); REQUIRE(score == Catch::Approx(scores[{file_name, "RandomForest"}]).epsilon(raw.epsilon));
} }
for (auto scores : scores) {
std::cout << "{{\"" << scores.first.first << "\", \"" << scores.first.second << "\"}, " << scores.second << "}, ";
}
} }
TEST_CASE("Classifiers features", "[PyClassifiers]") TEST_CASE("Classifiers features", "[PyClassifiers]")
{ {
auto raw = RawDatasets("iris", true); auto raw = RawDatasets("iris", true);
auto clf = pywrap::STree(); auto clf = pywrap::STree();
clf.fit(raw.Xv, raw.yv, raw.featuresv, raw.classNamev, raw.statesv); clf.fit(raw.Xt, raw.yt, raw.featurest, raw.classNamet, raw.statest);
REQUIRE(clf.getNumberOfNodes() == 0); REQUIRE(clf.getNumberOfNodes() == 3);
REQUIRE(clf.getNumberOfEdges() == 0); REQUIRE(clf.getNumberOfEdges() == 2);
} }
TEST_CASE("Get num features & num edges", "[PyClassifiers]") TEST_CASE("Get num features & num edges", "[PyClassifiers]")
{ {
auto raw = RawDatasets("iris", true); auto raw = RawDatasets("iris", true);
auto clf = pywrap::ODTE(); auto clf = pywrap::ODTE();
clf.fit(raw.Xv, raw.yv, raw.featuresv, raw.classNamev, raw.statesv); clf.fit(raw.Xt, raw.yt, raw.featurest, raw.classNamet, raw.statest);
REQUIRE(clf.getNumberOfNodes() == 5); REQUIRE(clf.getNumberOfNodes() == 10);
REQUIRE(clf.getNumberOfEdges() == 8); REQUIRE(clf.getNumberOfEdges() == 10);
} }