DecisionTreeClassifier - ручная обрезка деревьев - PullRequest
0 голосов
/ 22 декабря 2018

Я делаю интерактивный инструмент моделирования.Идея состоит в том, чтобы создать переменную с деревом решений.Однако эта переменная должна иметь экономическое значение (я хочу иметь возможность удалять разбиения, которые не имеют смысла теоретически).Поэтому я построил дерево с графикой, чтобы можно было слушать, где пользователь нажимал.Я прилагаю картинку ниже.

Мой вопрос заключается в том, могу ли я удалить узел вручную.Я могу захватить клик, то есть, какой узел вы хотите удалить;однако я не вижу в DecisionTreeClassifier опции для ручного удаления определенного узла.

Example Tree Изображение полного размера

Сильно обязателен.

Marin

1 Ответ

0 голосов
/ 23 декабря 2018

По предложению Максимилиана я зашел по ссылке и чуть-чуть подправил код для создания:

from sklearn.tree._tree import TREE_LEAF

def prune_index(inner_tree, index):
     # turn node into a leaf by "unlinking" its children
     inner_tree.children_left[index] = TREE_LEAF
     inner_tree.children_right[index] = TREE_LEAF
 # if there are shildren, visit them as well
     if inner_tree.children_left[index] != TREE_LEAF:
         prune_index(inner_tree, inner_tree.children_left[index])
         prune_index(inner_tree, inner_tree.children_right[index])

Работает как шарм!Спасибо !!

...