diff --git a/python-package/xgboost/core.py b/python-package/xgboost/core.py index f22371ab8..0f528270a 100644 --- a/python-package/xgboost/core.py +++ b/python-package/xgboost/core.py @@ -1393,9 +1393,9 @@ class Booster: + ",".join( [feature_idx_mapping[feature_name] for feature_name in constraint] ) - + "]" + + "]," ) - return s + "]" + return s[:-1] + "]" except KeyError as e: raise ValueError( "Constrained features are not a subset of training data feature names" diff --git a/tests/python/test_interaction_constraints.py b/tests/python/test_interaction_constraints.py index 12653b538..18d416501 100644 --- a/tests/python/test_interaction_constraints.py +++ b/tests/python/test_interaction_constraints.py @@ -78,6 +78,12 @@ class TestInteractionConstraints: feature_names=feature_names, interaction_constraints=constraints) + constraints = [['feature_0', 'feature_1'], ['feature_2']] + feature_names = ['feature_0', 'feature_1', 'feature_2'] + self.run_interaction_constraints(tree_method='exact', + feature_names=feature_names, + interaction_constraints=constraints) + @pytest.mark.skipif(**tm.no_sklearn()) def training_accuracy(self, tree_method): """Test accuracy, reused by GPU tests."""