[skl] Enable cat feature without specifying tree method. (#9353)
This commit is contained in:
parent
39390cc2ee
commit
e964654b8f
@ -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."
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -308,7 +308,7 @@ def test_dask_sparse(client: "Client") -> None:
|
||||
|
||||
|
||||
def run_categorical(client: "Client", tree_method: str, X, X_onehot, y) -> None:
|
||||
parameters = {"tree_method": tree_method, "max_cat_to_onehot": 9999} # force onehot
|
||||
parameters = {"tree_method": tree_method, "max_cat_to_onehot": 9999} # force onehot
|
||||
rounds = 10
|
||||
m = xgb.dask.DaskDMatrix(client, X_onehot, y, enable_categorical=True)
|
||||
by_etl_results = xgb.dask.train(
|
||||
@ -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(
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user