2015-05-03 2 views
1

у меня есть дерево классификации (ВОЗ) оценивается с помощью rpart:Как преобразовать дерево классификации участка с gridGraphics

library(rpart) 
treefit <- rpart(Kyphosis ~ Age + Number + Start, data = kyphosis, 
      control = rpart.control(cp = 0.001)) 

Я Plot дерева с помощью команды fancyRpartPlot из погремушки:

require(rattle) 
fancyRpartPlot(treefit) 

, а затем я попытаюсь преобразовать график в тот же результат, нарисованный с помощью сетки, используя grid.echo команда пакета gridGraphics.

library(gridGraphics) 
grid.echo() 

Я получаю следующее сообщение об ошибке:

Error in unit(x, default.units) : 'x' and 'units' must have length > 0 

я попробовать другой инструмент для визуализации дерева, пакет rpart.plot:

library(rpart.plot) 
rpart.plot(treefit) 
grid.echo() 

и снова:

Error in unit(x, default.units) : 'x' and 'units' must have length > 0 

я получаю сообщение об ошибке от grid.echo также при попытке преобразовать участки деревьев, порождаемых партии, RWeka и Rgraphviz. Команда, кажется, чтобы иметь возможность конвертировать только сюжеты, порожденные rpart:

plot(treefit) 
text(treefit) 
grid.echo() 
grid.ls() 

graphics-plot-1-xlab-1 
graphics-plot-1-ylab-1 
graphics-plot-1-text-1 
graphics-plot-1-lines-1 
graphics-plot-1-text-2 
graphics-plot-1-text-3 

К сожалению, эти участки являются сырыми и не нравится.

ответ

2

Я не в состоянии обеспечить полное решение, но, по крайней мере некоторые комментарии и альтернативы:

fancyRpartPlot() от rattle и rpart.plot() из rpart.plot не отличаются. Внутри, первый называет последнего (или фактически его родственной функцией prp() из того же пакета). Поэтому неудивительно, что оба они приводят к тем же проблемам. Однако я не уверен, как решить эту ошибку.

Факт, что участки от party (или лучше его преемника partykit) и RWeka не могут быть преобразованы, не так уж удивительно. Они уже нарисованы с grid! Вы также можете использовать partykit инфраструктуру, чтобы привлечь ваше rpart дерево:

library("partykit") 
plot(as.party(treefit)) 

rpart-tree-partykit-plot

+0

Уважаемый Ахим, ваши комментарии полезны и предложить мне путь для создания интерактивного дерева с использованием ** gridSVG **. Спасибо! –

+0

@ achim-zeileis, спасибо за большой вклад в статистическое сообщество! Знаете ли вы, есть ли способ преобразовать дерево 'party' в представления' rpart'? –

+0

Нет, мы не пытались это сделать, потому что формат 'rpart' действительно специфичен для алгоритма CART и не может легко представлять информацию, используемую в других алгоритмах дерева. Вероятно, вам удастся найти обходные пути для важных бит, но мы всегда чувствовали, что это не стоит усилий (для нас). И, насколько мне известно, никто другой не пытался написать такой интерфейс. –

Смежные вопросы