Обрезка дерева решений вручную - PullRequest
0 голосов
/ 20 января 2019

Я сгенерировал простое дерево, используя функцию rpart(), однако я хотел бы иметь возможность остановить второе разделение на Petal.Length < 4.9 до того, как оно разделится на Petal.Width, однако я не хотел бы изменять что-либо еще вдерево.Единственное, что я обнаружил, - это то, что я могу использовать функцию подмножества, чтобы вручную вырастить дерево, но этот процесс может быть очень утомительным.Какие-нибудь предложения относительно функции, которая могла бы использоваться?Код, используемый для создания дерева:

library(rpart)

library(datasets)

data("iris")

library(rpart.plot)


Sample <-sample.int(n = nrow(iris), size = floor(.7*nrow(iris)), replace = F)

train <- iris[Sample, ]

test <- iris[-Sample, ]

m1 <- rpart(Species~Sepal.Width + Sepal.Length + Petal.Length + Petal.Width, 
            data = train, control = rpart.control(cp = 0.005), method = "anova")

rpart.plot(m1, type = 3, fallen.leaves = TRUE)

Дерево решений

1 Ответ

0 голосов
/ 10 марта 2019

Один из подходов заключается в использовании аргумента snip для rpart.plot:

trimmed.tree <- rpart.plot(m1, snip=TRUE))$obj   # manually trim the tree
rpart.plot(trimmed.tree)                         # display the trimmed tree

Это выводит дерево на экран, которое вы можете вручную обрезать мышью. Подробности см. В главе 9 «Обрезка дерева с помощью мыши» виньетки пакета rpart.plot. http://www.milbo.org/doc/prp.pdf.

...