8000 [MRG] Set min_impurity_split in gradient boosting models · scikit-learn/scikit-learn@c901cc5 · GitHub
[go: up one dir, main page]

Skip to content

Commit c901cc5

Browse files
author
Sebastian Pölsterl
committed
[MRG] Set min_impurity_split in gradient boosting models
self.min_impurity_split should be passed to DecisionTreeRegressor in BaseGradientBoosting._fit_stage. Fixes #8006
1 parent aceb73c commit c901cc5

File tree

3 files changed

+18
-0
lines changed

3 files changed

+18
-0
lines changed

doc/whats_new.rst

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,10 @@ API changes summary
127127
now only have ``self.estimators_`` available after ``fit``.
128128
:issue:`7464` by `Lars Buitinck`_ and `Loic Esteve`_.
129129

130+
- Fix a bug where :class:`sklearn.ensemble.GradientBoostingClassifier` and
131+
:class:`sklearn.ensemble.GradientBoostingRegressor` ignored the
132+
``min_impurity_split`` parameter.
133+
:issue:`8006` by :user:`Sebastian Pölsterl <sebp>`.
130134

131135
.. _changes_0_18_1:
132136

sklearn/ensemble/gradient_boosting.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -765,6 +765,7 @@ def _fit_stage(self, i, X, y, y_pred, sample_weight, sample_mask,
765765
min_samples_split=self.min_samples_split,
766766
min_samples_leaf=self.min_samples_leaf,
767767
min_weight_fraction_leaf=self.min_weight_fraction_leaf,
768+
min_impurity_split=self.min_impurity_split,
768769
max_features=self.max_features,
769770
max_leaf_nodes=self.max_leaf_nodes,
770771
random_state=random_state,

sklearn/ensemble/tests/test_gradient_boosting.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -961,6 +961,19 @@ def test_max_leaf_nodes_max_depth():
961961
assert_equal(tree.max_depth, 1)
962962

963963

964+
def test_min_impurity_split():
965+
# Test if min_impurity_split of base estimators is set
966+
# Regression test for #8006
967+
X, y = datasets.make_hastie_10_2(n_samples=100, random_state=1)
968+
all_estimators = [GradientBoostingRegressor,
969+
GradientBoostingClassifier]
970+
971+
for GBEstimator in all_estimators:
972+
est = GBEstimator(min_impurity_split=0.1).fit(X, y)
973+
for tree in est.estimators_.flat:
974+
assert_equal(tree.min_impurity_split, 0.1)
975+
976+
964977
def test_warm_start_wo_nestimators_change():
965978
# Test if warm_start does nothing if n_estimators is not changed.
966979
# Regression test for #3513.

0 commit comments

Comments
 (0)
0