Skip to content

Commit 9db5dee

Browse files
committed
Merge pull request scikit-learn#5113 from fzalkow/master
[MRG + 1] added a string for FriedmanMSE (instead impurity) when exporting a do…
2 parents b3694b1 + a8976e7 commit 9db5dee

File tree

2 files changed

+22
-1
lines changed

2 files changed

+22
-1
lines changed

sklearn/tree/export.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,9 @@ def node_to_str(tree, node_id, criterion):
208208

209209
# Write impurity
210210
if impurity:
211-
if not isinstance(criterion, six.string_types):
211+
if isinstance(criterion, _tree.FriedmanMSE):
212+
criterion = "friedman_mse"
213+
elif not isinstance(criterion, six.string_types):
212214
criterion = "impurity"
213215
if labels:
214216
node_string += '%s = ' % criterion

sklearn/tree/tests/test_export.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,16 @@
22
Testing for export functions of decision trees (sklearn.tree.export).
33
"""
44

5+
from re import finditer
6+
57
from numpy.testing import assert_equal
68
from nose.tools import assert_raises
79

810
from sklearn.tree import DecisionTreeClassifier, DecisionTreeRegressor
11+
from sklearn.ensemble import GradientBoostingClassifier
912
from sklearn.tree import export_graphviz
1013
from sklearn.externals.six import StringIO
14+
from sklearn.utils.testing import assert_in
1115

1216
# toy sample
1317
X = [[-2, -1], [-1, -1], [-1, -2], [1, 1], [1, 2], [2, 1]]
@@ -223,3 +227,18 @@ def test_graphviz_errors():
223227
# Check class_names error
224228
out = StringIO()
225229
assert_raises(IndexError, export_graphviz, clf, out, class_names=[])
230+
231+
232+
def test_friedman_mse_in_graphviz():
233+
clf = DecisionTreeRegressor(criterion="friedman_mse", random_state=0)
234+
clf.fit(X, y)
235+
dot_data = StringIO()
236+
export_graphviz(clf, out_file=dot_data)
237+
238+
clf = GradientBoostingClassifier(n_estimators=2, random_state=0)
239+
clf.fit(X, y)
240+
for estimator in clf.estimators_:
241+
export_graphviz(estimator[0], out_file=dot_data)
242+
243+
for finding in finditer("\[.*?samples.*?\]", dot_data.getvalue()):
244+
assert_in("friedman_mse", finding.group())

0 commit comments

Comments
 (0)