Fix default metric configuration. (#9575)

This commit is contained in:
Jiaming Yuan
2023-09-14 04:05:47 +08:00
committed by GitHub
parent b438d684d2
commit 300f9ace06
6 changed files with 105 additions and 25 deletions

View File

@@ -1319,7 +1319,9 @@ class LearnerImpl : public LearnerIO {
if (metrics_.empty() && tparam_.disable_default_eval_metric <= 0) {
metrics_.emplace_back(Metric::Create(obj_->DefaultEvalMetric(), &ctx_));
auto config = obj_->DefaultMetricConfig();
metrics_.back()->LoadConfig(config);
if (!IsA<Null>(config)) {
metrics_.back()->LoadConfig(config);
}
metrics_.back()->Configure({cfg_.begin(), cfg_.end()});
}

View File

@@ -287,6 +287,13 @@ class PseudoHuberRegression : public FitIntercept {
}
FromJson(in["pseudo_huber_param"], &param_);
}
[[nodiscard]] Json DefaultMetricConfig() const override {
CHECK(param_.GetInitialised());
Json config{Object{}};
config["name"] = String{this->DefaultEvalMetric()};
config["pseudo_huber_param"] = ToJson(param_);
return config;
}
};
XGBOOST_REGISTER_OBJECTIVE(PseudoHuberRegression, "reg:pseudohubererror")