Expose feature_types to sklearn interface. (#7821)
This commit is contained in:
@@ -1273,6 +1273,38 @@ def test_estimator_reg(estimator, check):
|
||||
check(estimator)
|
||||
|
||||
|
||||
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,
|
||||
)
|
||||
reg.fit(X.values, y, eval_set=[(X.values, y)])
|
||||
from_cat = reg.evals_result()["validation_0"]["rmse"]
|
||||
predt_cat = reg.predict(X.values)
|
||||
assert reg.get_booster().feature_types == ft
|
||||
with tempfile.TemporaryDirectory() as tmpdir:
|
||||
path = os.path.join(tmpdir, "model.json")
|
||||
reg.save_model(path)
|
||||
reg = xgb.XGBRegressor()
|
||||
reg.load_model(path)
|
||||
assert reg.feature_types == ft
|
||||
|
||||
onehot, y = tm.make_categorical(
|
||||
n_samples=32, n_features=2, n_categories=3, onehot=True
|
||||
)
|
||||
reg = xgb.XGBRegressor(tree_method="hist")
|
||||
reg.fit(onehot, y, eval_set=[(onehot, y)])
|
||||
from_enc = reg.evals_result()["validation_0"]["rmse"]
|
||||
predt_enc = reg.predict(onehot)
|
||||
|
||||
np.testing.assert_allclose(from_cat, from_enc)
|
||||
np.testing.assert_allclose(predt_cat, predt_enc)
|
||||
|
||||
|
||||
def test_prediction_config():
|
||||
reg = xgb.XGBRegressor()
|
||||
assert reg._can_use_inplace_predict() is True
|
||||
|
||||
Reference in New Issue
Block a user