Rework the precision metric. (#9222)
- Rework the precision metric for both CPU and GPU. - Mention it in the document. - Cleanup old support code for GPU ranking metric. - Deterministic GPU implementation. * Drop support for classification. * type. * use batch shape. * lint. * cpu build. * cpu build. * lint. * Tests. * Fix. * Cleanup error message.
This commit is contained in:
@@ -3,7 +3,7 @@ import pytest
|
||||
|
||||
import xgboost as xgb
|
||||
from xgboost import testing as tm
|
||||
from xgboost.testing.metrics import check_quantile_error
|
||||
from xgboost.testing.metrics import check_precision_score, check_quantile_error
|
||||
|
||||
rng = np.random.RandomState(1337)
|
||||
|
||||
@@ -315,6 +315,9 @@ class TestEvalMetrics:
|
||||
def test_pr_auc_ltr(self):
|
||||
self.run_pr_auc_ltr("hist")
|
||||
|
||||
def test_precision_score(self):
|
||||
check_precision_score("hist")
|
||||
|
||||
@pytest.mark.skipif(**tm.no_sklearn())
|
||||
def test_quantile_error(self) -> None:
|
||||
check_quantile_error("hist")
|
||||
|
||||
@@ -55,6 +55,38 @@ class TestQuantileDMatrix:
|
||||
r = np.arange(1.0, n_samples)
|
||||
np.testing.assert_allclose(Xy.get_data().toarray()[1:, 0], r)
|
||||
|
||||
def test_error(self):
|
||||
from sklearn.model_selection import train_test_split
|
||||
|
||||
rng = np.random.default_rng(1994)
|
||||
X, y = make_categorical(
|
||||
n_samples=128, n_features=2, n_categories=3, onehot=False
|
||||
)
|
||||
reg = xgb.XGBRegressor(tree_method="hist", enable_categorical=True)
|
||||
w = rng.uniform(0, 1, size=y.shape[0])
|
||||
|
||||
X_train, X_test, y_train, y_test, w_train, w_test = train_test_split(
|
||||
X, y, w, random_state=1994
|
||||
)
|
||||
|
||||
with pytest.raises(ValueError, match="sample weight"):
|
||||
reg.fit(
|
||||
X,
|
||||
y,
|
||||
sample_weight=w_train,
|
||||
eval_set=[(X_test, y_test)],
|
||||
sample_weight_eval_set=[w_test],
|
||||
)
|
||||
|
||||
with pytest.raises(ValueError, match="sample weight"):
|
||||
reg.fit(
|
||||
X_train,
|
||||
y_train,
|
||||
sample_weight=w,
|
||||
eval_set=[(X_test, y_test)],
|
||||
sample_weight_eval_set=[w_test],
|
||||
)
|
||||
|
||||
@pytest.mark.parametrize("sparsity", [0.0, 0.1, 0.8, 0.9])
|
||||
def test_with_iterator(self, sparsity: float) -> None:
|
||||
n_samples_per_batch = 317
|
||||
|
||||
Reference in New Issue
Block a user