Извлечение переменных меток из дерева решений 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