Таким образом, ваша модель действительно выглядит так, как будто она не предлагает никакого дополнительного различия между узлами первого и второго уровня;поэтому, если вы уверены , что это (своего рода) оптимально для вашего случая, вы можете просто попросить его остановиться там, используя max_depth=1
вместо 2:
clf = tree.DecisionTreeClassifier(max_depth=1)
Keepоднако помните, что в действительности это может быть далеко не оптимальным;взгляните на дерево для набора данных радужной оболочки от scikit-learn docs :
, где вы можете увидеть это,далее вниз по уровням дерева узлы с class=versicolor
выходят из того, что выглядит как "чистые" узлы class=virginica
(и наоборот).
Итак, прежде чем принять решение заранее обрезать дерево до max_depth=1
,Возможно, вы захотите проверить, может ли быть лучше, если оставить его для дальнейшего роста (то есть, не указав аргумент max_depth
, оставив его в его значении по умолчанию из None
),
Все зависит от , почему именно вы делаете это (т. Е. Ваш бизнес случай): если это исследовательский случай, вы вполне можете остановиться на max_depth=1
;если он является прогнозирующим, вы должны рассмотреть, какая конфигурация максимизирует соответствующую метрику (скорее всего здесь, точность).