В настоящее время я работаю над проблемой предсказания, которую я попытался решить с помощью scikit-learns DecisionTreeRegressor
, когда натолкнулся на следующую проблему:
При подгонке дерева указываются оба параметра max_depth
и
max_leaf_nodes
, depth
результирующего дерева равно max_depth+1
.
При подгонке дерева указав только max_depth
, полученное дерево
имеет correct depth
.
Может ли это быть ошибкой в DecisionTreeRegressor class
или мне не хватает общих знаний о деревьях регрессии?
Я работаю на машине с Windows, в ноутбуке Python 3.7 Jupyter. Версия Sklearn - 0.20.3.
На самом деле я сталкивался с этой работой с RandomForestRegressor
, но обнаружил ту же проблему для DecisionTreeRegressor
.
Я написал следующий упрощенный пример, чтобы вы могли попробовать сами. Просто раскомментируйте max_leaf_nodes=10
.
Я также визуализировал деревья, используя graphviz
, который на самом деле показывал деревья разной глубины.
import numpy as np
from sklearn.tree import DecisionTreeRegressor
X = np.random.rand(10,4)
y = np.random.rand(10,1)
tree = DecisionTreeRegressor(max_depth = 2,
#max_leaf_nodes = 10
)
tree.fit(X,y)
print(tree.tree_.max_depth)
Спасибо за любые комментарии.