metric.cpp 1.13 KB
Newer Older
Guolin Ke's avatar
Guolin Ke committed
1
2
3
4
#include <LightGBM/metric.h>
#include "regression_metric.hpp"
#include "binary_metric.hpp"
#include "rank_metric.hpp"
5
#include "multiclass_metric.hpp"
Guolin Ke's avatar
Guolin Ke committed
6
7
8
9

namespace LightGBM {

Metric* Metric::CreateMetric(const std::string& type, const MetricConfig& config) {
Guolin Ke's avatar
Guolin Ke committed
10
  if (type == std::string("l2")) {
Guolin Ke's avatar
Guolin Ke committed
11
    return new L2Metric(config);
Guolin Ke's avatar
Guolin Ke committed
12
  } else if (type == std::string("l1")) {
Guolin Ke's avatar
Guolin Ke committed
13
    return new L1Metric(config);
Tsukasa OMOTO's avatar
Tsukasa OMOTO committed
14
15
  } else if (type == std::string("huber")) {
    return new HuberLossMetric(config);
Tsukasa OMOTO's avatar
Tsukasa OMOTO committed
16
17
  } else if (type == std::string("fair")) {
    return new FairLossMetric(config);
Guolin Ke's avatar
Guolin Ke committed
18
  } else if (type == std::string("binary_logloss")) {
Guolin Ke's avatar
Guolin Ke committed
19
    return new BinaryLoglossMetric(config);
Guolin Ke's avatar
Guolin Ke committed
20
  } else if (type == std::string("binary_error")) {
Guolin Ke's avatar
Guolin Ke committed
21
    return new BinaryErrorMetric(config);
Guolin Ke's avatar
Guolin Ke committed
22
  } else if (type == std::string("auc")) {
Guolin Ke's avatar
Guolin Ke committed
23
    return new AUCMetric(config);
Guolin Ke's avatar
Guolin Ke committed
24
  } else if (type == std::string("ndcg")) {
Guolin Ke's avatar
Guolin Ke committed
25
    return new NDCGMetric(config);
Guolin Ke's avatar
Guolin Ke committed
26
  } else if (type == std::string("multi_logloss")) {
27
    return new MultiLoglossMetric(config);
Guolin Ke's avatar
Guolin Ke committed
28
  } else if (type == std::string("multi_error")) {
29
    return new MultiErrorMetric(config);
Guolin Ke's avatar
Guolin Ke committed
30
31
32
33
34
  }
  return nullptr;
}

}  // namespace LightGBM