Как извлечь древовидную структуру из функции ctree? - PullRequest
5 голосов
/ 30 декабря 2011

Я пытаюсь извлечь информацию о дереве из вывода ctree. Я попробовал информацию класса "BinaryTree", но безуспешно. Любой вклад приветствуется.

Спасибо

Ответы [ 2 ]

12 голосов
/ 30 декабря 2011

Объекты ctree - это объекты S4, по крайней мере, наверху, а информация о дереве находится в слоте «дерева». Доступ к слоту дерева можно получить с помощью оператора @. Если вы возьмете первый пример на странице справки (ctree), вы можете получить графическое отображение с:

plot(airct)

enter image description here

И затем вы можете просмотреть ветви дерева, пройдя операции со списком. «Листья» дерева являются потомками узлов с «терминалом» == ИСТИНА:

> airct@tree$right$terminal
[1] FALSE
> airct@tree$left$terminal
[1] FALSE
> airct@tree$right$right$terminal
[1] TRUE
> airct@tree$right$left$terminal
[1] TRUE
> airct@tree$left$left$terminal
[1] TRUE
> airct@tree$left$right$terminal
[1] FALSE

Информация в узлах над листьями также может быть восстановлена:

> airct@tree$left$right
4) Temp <= 77; criterion = 0.997, statistic = 11.599
  5)*  weights = 48 
4) Temp > 77
  6)*  weights = 21 

Это та же информация, что функция nodes восстановит, если вы знаете номер узла:

> nodes(airct,4)
[[1]]
4) Temp <= 77; criterion = 0.997, statistic = 11.599
  5)*  weights = 48 
4) Temp > 77
  6)*  weights = 21 
1 голос
/ 26 ноября 2014

Пакет mlmeta R преобразует установленные модели ctree в код SAS.Он может быть легко адаптирован к другим языкам и, как правило, поучителен для внутренних объектов объекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...