From 4a2ef130a70b60c36bdc5c0feec6c847db4d4ad0 Mon Sep 17 00:00:00 2001 From: AbdealiJK Date: Sun, 4 Dec 2016 13:39:00 +0530 Subject: [PATCH] tests/cpp: Add test for elementwise_metric.cc --- tests/cpp/metric/test_elementwise_metric.cc | 55 +++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/tests/cpp/metric/test_elementwise_metric.cc b/tests/cpp/metric/test_elementwise_metric.cc index 8aba13e6a..42fbdb81a 100644 --- a/tests/cpp/metric/test_elementwise_metric.cc +++ b/tests/cpp/metric/test_elementwise_metric.cc @@ -12,3 +12,58 @@ TEST(Metric, RMSE) { { 0, 0, 1, 1}), 0.6403, 0.001); } + +TEST(Metric, MAE) { + xgboost::Metric * metric = xgboost::Metric::Create("mae"); + ASSERT_STREQ(metric->Name(), "mae"); + EXPECT_NEAR(GetMetricEval(metric, {0, 1}, {0, 1}), 0, 1e-10); + EXPECT_NEAR(GetMetricEval(metric, + {0.1, 0.9, 0.1, 0.9}, + { 0, 0, 1, 1}), + 0.5, 0.001); +} + +TEST(Metric, LogLoss) { + xgboost::Metric * metric = xgboost::Metric::Create("logloss"); + ASSERT_STREQ(metric->Name(), "logloss"); + EXPECT_NEAR(GetMetricEval(metric, {0, 1}, {0, 1}), 0, 1e-10); + EXPECT_NEAR(GetMetricEval(metric, + {0.1, 0.9, 0.1, 0.9}, + { 0, 0, 1, 1}), + 1.2039, 0.001); +} + +TEST(Metric, Error) { + xgboost::Metric * metric = xgboost::Metric::Create("error"); + ASSERT_STREQ(metric->Name(), "error"); + EXPECT_NEAR(GetMetricEval(metric, {0, 1}, {0, 1}), 0, 1e-10); + EXPECT_NEAR(GetMetricEval(metric, + {0.1, 0.9, 0.1, 0.9}, + { 0, 0, 1, 1}), + 0.5, 0.001); + + EXPECT_ANY_THROW(xgboost::Metric::Create("error@abc")); + delete metric; + metric = xgboost::Metric::Create("error@0.5"); + EXPECT_STREQ(metric->Name(), "error"); + + delete metric; + metric = xgboost::Metric::Create("error@0.1"); + ASSERT_STREQ(metric->Name(), "error@0.1"); + EXPECT_STREQ(metric->Name(), "error@0.1"); + EXPECT_NEAR(GetMetricEval(metric, {0, 1}, {0, 1}), 0, 1e-10); + EXPECT_NEAR(GetMetricEval(metric, + {0.1, 0.2, 0.1, 0.2}, + { 0, 0, 1, 1}), + 0.5, 0.001); +} + +TEST(Metric, PoissionNegLogLik) { + xgboost::Metric * metric = xgboost::Metric::Create("poisson-nloglik"); + ASSERT_STREQ(metric->Name(), "poisson-nloglik"); + EXPECT_NEAR(GetMetricEval(metric, {0, 1}, {0, 1}), 0.5, 1e-10); + EXPECT_NEAR(GetMetricEval(metric, + {0.1, 0.2, 0.1, 0.2}, + { 0, 0, 1, 1}), + 1.1280, 0.001); +}