[R] Minor improvements for evaluation printing (#9940)

This commit is contained in:
david-cortes 2024-01-03 08:26:55 +01:00 committed by GitHub
parent 9e33a10202
commit 49247458f9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 6 additions and 4 deletions

View File

@ -770,7 +770,8 @@ xgb.gblinear.history <- function(model, class_index = NULL) {
if (!is.null(eval_err)) { if (!is.null(eval_err)) {
if (length(eval_res) != length(eval_err)) if (length(eval_res) != length(eval_err))
stop('eval_res & eval_err lengths mismatch') 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 { } else {
res <- paste0(sprintf("%s:%f", enames, eval_res), collapse = '\t') res <- paste0(sprintf("%s:%f", enames, eval_res), collapse = '\t')
} }

View File

@ -244,8 +244,9 @@ xgb.cv <- function(params = list(), data, nrounds, nfold, label = NULL, missing
) )
}) })
msg <- simplify2array(msg) msg <- simplify2array(msg)
bst_evaluation <- rowMeans(msg) # Note: these variables might look unused here, but they are used in the callbacks
bst_evaluation_err <- sqrt(rowMeans(msg^2) - bst_evaluation^2) # nolint bst_evaluation <- rowMeans(msg) # nolint
bst_evaluation_err <- apply(msg, 1, sd) # nolint
for (f in cb$post_iter) f() for (f in cb$post_iter) f()

View File

@ -57,7 +57,7 @@ test_that("cb.print.evaluation works as expected", {
expect_output(f5(), "\\[7\\]\ttrain-auc:0.900000\ttest-auc:0.800000") expect_output(f5(), "\\[7\\]\ttrain-auc:0.900000\ttest-auc:0.800000")
bst_evaluation_err <- c('train-auc' = 0.1, 'test-auc' = 0.2) 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", { test_that("cb.evaluation.log works as expected", {