Conditional Entropy test
This commit is contained in:
parent
7efd95095c
commit
ef3c74633c
@ -100,6 +100,25 @@ TEST_CASE("Entropy Test", "[Metrics]")
|
|||||||
REQUIRE(result == Catch::Approx(0.693147180559945).epsilon(raw.epsilon));
|
REQUIRE(result == Catch::Approx(0.693147180559945).epsilon(raw.epsilon));
|
||||||
}
|
}
|
||||||
TEST_CASE("Conditional Entropy", "[Metrics]")
|
TEST_CASE("Conditional Entropy", "[Metrics]")
|
||||||
|
{
|
||||||
|
auto raw = RawDatasets("iris", true);
|
||||||
|
bayesnet::Metrics metrics(raw.dataset, raw.features, raw.className, raw.classNumStates);
|
||||||
|
auto expected = std::map<std::pair<int, int>, double>{
|
||||||
|
{ { 0, 1 }, 1.32674 },
|
||||||
|
{ { 0, 2 }, 0.236253 },
|
||||||
|
{ { 0, 3 }, 0.1202 },
|
||||||
|
{ { 1, 2 }, 0.252551 },
|
||||||
|
{ { 1, 3 }, 0.10515 },
|
||||||
|
{ { 2, 3 }, 0.108323 },
|
||||||
|
};
|
||||||
|
for (int i = 0; i < raw.features.size() - 1; ++i) {
|
||||||
|
for (int j = i + 1; j < raw.features.size(); ++j) {
|
||||||
|
double result = metrics.conditionalEntropy(raw.dataset.index({ i, "..." }), raw.dataset.index({ j, "..." }), raw.yt, raw.weights);
|
||||||
|
REQUIRE(result == Catch::Approx(expected.at({ i, j })).epsilon(raw.epsilon));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
TEST_CASE("Conditional Mutual Information", "[Metrics]")
|
||||||
{
|
{
|
||||||
auto raw = RawDatasets("iris", true);
|
auto raw = RawDatasets("iris", true);
|
||||||
bayesnet::Metrics metrics(raw.dataset, raw.features, raw.className, raw.classNumStates);
|
bayesnet::Metrics metrics(raw.dataset, raw.features, raw.className, raw.classNumStates);
|
||||||
|
Loading…
Reference in New Issue
Block a user