[skl] Enable cat feature without specifying tree method. (#9353)

This commit is contained in:
Jiaming Yuan 2023-07-03 22:06:17 +08:00 committed by GitHub
parent 39390cc2ee
commit e964654b8f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 5 additions and 7 deletions

View File

@ -930,8 +930,7 @@ class XGBModel(XGBModelBase):
callbacks = self.callbacks if self.callbacks is not None else callbacks
tree_method = params.get("tree_method", None)
cat_support = {"gpu_hist", "approx", "hist"}
if self.enable_categorical and tree_method not in cat_support:
if self.enable_categorical and tree_method == "exact":
raise ValueError(
"Experimental support for categorical data is not implemented for"
" current tree method yet."

View File

@ -1390,7 +1390,6 @@ def test_categorical():
X, y = tm.make_categorical(n_samples=32, n_features=2, n_categories=3, onehot=False)
ft = ["c"] * X.shape[1]
reg = xgb.XGBRegressor(
tree_method="hist",
feature_types=ft,
max_cat_to_onehot=1,
enable_categorical=True,
@ -1409,7 +1408,7 @@ def test_categorical():
onehot, y = tm.make_categorical(
n_samples=32, n_features=2, n_categories=3, onehot=True
)
reg = xgb.XGBRegressor(tree_method="hist")
reg = xgb.XGBRegressor()
reg.fit(onehot, y, eval_set=[(onehot, y)])
from_enc = reg.evals_result()["validation_0"]["rmse"]
predt_enc = reg.predict(onehot)

View File

@ -364,9 +364,9 @@ def run_categorical(client: "Client", tree_method: str, X, X_onehot, y) -> None:
check_model_output(reg.get_booster())
reg = xgb.dask.DaskXGBRegressor(
enable_categorical=True, n_estimators=10
enable_categorical=True, n_estimators=10, tree_method="exact"
)
with pytest.raises(ValueError):
with pytest.raises(ValueError, match="categorical data"):
reg.fit(X, y)
# check partition based
reg = xgb.dask.DaskXGBRegressor(