#python #machine-learning #scikit-learn #decision-tree
Вопрос:
Я хотел бы экспортировать структуру дерева решений из python. Поэтому я рассматриваю возможность сохранения каждого узла дерева. В документе Tree от sklearn я нахожу два атрибута capacity и node_counts очень похожими. В моем нынешнем использовании они всегда одни и те же. Но мне интересно, в чем их главное отличие?
Ответ №1:
Из документа, на который вы ссылались:
- node_count — Текущее количество узлов.
- емкость — максимальное количество узлов, которое может вместить это дерево, прежде чем возникнет необходимость изменить размер внутренних буферов.
число узлов всегда равно
В то же время дерево не хочет слишком сильно увеличивать емкость за пределами node_count, потому что неиспользуемые внутренние буферы могут потреблять довольно много памяти.
TLDR: При написании экспортера дерева вы должны обращать внимание на node_count, а не на емкость.
Комментарии:
1. Но для дерева решений, которое уже обучено, должен ли node_count всегда быть равен емкости?
2. Необязательно — изменение размера буферов, чтобы node_count == емкость была дополнительным вычислением. Возможно, неиспользуемая емкость не настолько велика после обучения, чтобы оправдать трату дополнительного времени/памяти (по крайней мере временно) без какой-либо видимой выгоды для конечного пользователя.