Извлечение переменных меток из дерева решений rpart

Я использовал часть для построения дерева решений на наборе данных, который имеет категориальные переменные с сотнями уровней. Дерево разделяет эти переменные на основе выбранных значений переменной. Я хотел бы изучить этикетки, на которых сделан сплит.

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

0 ответов

Одна из проблем заключается в том, что некоторые функции в rpartпакет не экспортируется. Если вы хотите зафиксировать выводrpart:::print.rpart затем, начиная с воспроизводимого примера:

set.seed(1)
df1 <- data.frame(y=rbinom(n=100, size=1, prob=0.5),
                  x1=rbinom(n=100, size=1, prob=0.25),
                  x2=rbinom(n=100, size=1, prob=0.75))
(r1 <- rpart(y ~ ., data=df1))

давая

n= 100 

node), split, n, deviance, yval
      * denotes terminal node

1) root 100 24.960000 0.4800000  
  2) x1< 0.5 78 19.179490 0.4358974  
    4) x2>=0.5 66 15.954550 0.4090909 *
    5) x2< 0.5 12  2.916667 0.5833333 *
  3) x1>=0.5 22  5.090909 0.6363636  
    6) x2< 0.5 7  1.714286 0.4285714 *
    7) x2>=0.5 15  2.933333 0.7333333 *

Теперь, глядя на rpart:::print.rpart, мы видим призыв к rpart:::labels.rpart, давая нам разбиения (или имена "строк" ​​в выводе выше). Значениеn, deviance, yval и многое другое хранится в r1$frame, что можно увидеть, проверив вывод unclass(r1). Отступ

Таким образом, мы могли извлечь вышеуказанное с помощью

(df2 <- data.frame(split=rpart:::labels.rpart(r1), n=r1$frame$n))

давая

    split   n
1    root 100
2 x1< 0.5  78
3 x2>=0.5  66
4 x2< 0.5  12
5 x1>=0.5  22
6 x2< 0.5   7
7 x2>=0.5  15
Другие вопросы по тегам