File: test_objectives.py

package info (click to toggle)
xgboost 3.0.0-1
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 13,796 kB
  • sloc: cpp: 67,502; python: 35,503; java: 4,676; ansic: 1,426; sh: 1,320; xml: 1,197; makefile: 204; javascript: 19
file content (29 lines) | stat: -rw-r--r-- 1,059 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import numpy as np
from sklearn.datasets import make_classification

import xgboost as xgb
from xgboost.testing.updater import get_basescore


def test_exp_family() -> None:
    X, y = make_classification(n_samples=128, n_classes=2, weights=[0.8, 0.2])
    clf = xgb.train(
        {"objective": "binary:logistic"}, xgb.QuantileDMatrix(X, y), num_boost_round=1
    )
    reg = xgb.train(
        {"objective": "reg:logistic"}, xgb.QuantileDMatrix(X, y), num_boost_round=1
    )
    clf1 = xgb.train(
        {"objective": "binary:logitraw"}, xgb.QuantileDMatrix(X, y), num_boost_round=1
    )
    # The base score stored in the booster model is un-transformed
    np.testing.assert_allclose([get_basescore(m) for m in (reg, clf, clf1)], y.mean())

    X, y = make_classification(weights=[0.8, 0.2], random_state=2025)
    clf = xgb.train(
        {"objective": "binary:logistic", "scale_pos_weight": 4.0},
        xgb.QuantileDMatrix(X, y),
        num_boost_round=1,
    )
    score = get_basescore(clf)
    np.testing.assert_allclose(score, 0.5, rtol=1e-3)