В чем разница между емкостью и node_counts в sklearn.tree.tree.Дерево?

#python #machine-learning #scikit-learn #decision-tree

Вопрос:

Я хотел бы экспортировать структуру дерева решений из python. Поэтому я рассматриваю возможность сохранения каждого узла дерева. В документе Tree от sklearn я нахожу два атрибута capacity и node_counts очень похожими. В моем нынешнем использовании они всегда одни и те же. Но мне интересно, в чем их главное отличие?

https://www.kite.com/python/docs/sklearn.tree.tree.Дерево

Ответ №1:

Из документа, на который вы ссылались:

  • node_count — Текущее количество узлов.
  • емкость — максимальное количество узлов, которое может вместить это дерево, прежде чем возникнет необходимость изменить размер внутренних буферов.

число узлов всегда равно

В то же время дерево не хочет слишком сильно увеличивать емкость за пределами node_count, потому что неиспользуемые внутренние буферы могут потреблять довольно много памяти.

TLDR: При написании экспортера дерева вы должны обращать внимание на node_count, а не на емкость.

Комментарии:

1. Но для дерева решений, которое уже обучено, должен ли node_count всегда быть равен емкости?

2. Необязательно — изменение размера буферов, чтобы node_count == емкость была дополнительным вычислением. Возможно, неиспользуемая емкость не настолько велика после обучения, чтобы оправдать трату дополнительного времени/памяти (по крайней мере временно) без какой-либо видимой выгоды для конечного пользователя.