From 49247458f9ede5e4073f5a38b4d6deafc20238c8 Mon Sep 17 00:00:00 2001 From: david-cortes Date: Wed, 3 Jan 2024 08:26:55 +0100 Subject: [PATCH] [R] Minor improvements for evaluation printing (#9940) --- R-package/R/callbacks.R | 3 ++- R-package/R/xgb.cv.R | 5 +++-- R-package/tests/testthat/test_callbacks.R | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/R-package/R/callbacks.R b/R-package/R/callbacks.R index 54f821a79..f8f3b5a30 100644 --- a/R-package/R/callbacks.R +++ b/R-package/R/callbacks.R @@ -770,7 +770,8 @@ xgb.gblinear.history <- function(model, class_index = NULL) { if (!is.null(eval_err)) { if (length(eval_res) != length(eval_err)) stop('eval_res & eval_err lengths mismatch') - res <- paste0(sprintf("%s:%f+%f", enames, eval_res, eval_err), collapse = '\t') + # Note: UTF-8 code for plus/minus sign is U+00B1 + res <- paste0(sprintf("%s:%f\U00B1%f", enames, eval_res, eval_err), collapse = '\t') } else { res <- paste0(sprintf("%s:%f", enames, eval_res), collapse = '\t') } diff --git a/R-package/R/xgb.cv.R b/R-package/R/xgb.cv.R index 1c17d86f0..b0d8c4ebe 100644 --- a/R-package/R/xgb.cv.R +++ b/R-package/R/xgb.cv.R @@ -244,8 +244,9 @@ xgb.cv <- function(params = list(), data, nrounds, nfold, label = NULL, missing ) }) msg <- simplify2array(msg) - bst_evaluation <- rowMeans(msg) - bst_evaluation_err <- sqrt(rowMeans(msg^2) - bst_evaluation^2) # nolint + # Note: these variables might look unused here, but they are used in the callbacks + bst_evaluation <- rowMeans(msg) # nolint + bst_evaluation_err <- apply(msg, 1, sd) # nolint for (f in cb$post_iter) f() diff --git a/R-package/tests/testthat/test_callbacks.R b/R-package/tests/testthat/test_callbacks.R index 63a4c3f25..de5150380 100644 --- a/R-package/tests/testthat/test_callbacks.R +++ b/R-package/tests/testthat/test_callbacks.R @@ -57,7 +57,7 @@ test_that("cb.print.evaluation works as expected", { expect_output(f5(), "\\[7\\]\ttrain-auc:0.900000\ttest-auc:0.800000") bst_evaluation_err <- c('train-auc' = 0.1, 'test-auc' = 0.2) - expect_output(f1(), "\\[7\\]\ttrain-auc:0.900000\\+0.100000\ttest-auc:0.800000\\+0.200000") + expect_output(f1(), "\\[7\\]\ttrain-auc:0.900000±0.100000\ttest-auc:0.800000±0.200000") }) test_that("cb.evaluation.log works as expected", {