【问题标题】:Manually Pruning a Decision Tree手动修剪决策树
【发布时间】:2019-06-14 05:31:06
【问题描述】:

我已经使用 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)

Decision Tree

【问题讨论】:

  • 您还应该学习使用set.seed() 构建可重现的示例。当我运行你的代码时,我什至没有对“Petal.Width”进行拆分。
  • 谢谢我补充了。不过,这种拆分只是一个示例,理想情况下,我希望能够将此逻辑应用于更大的树

标签: r machine-learning decision-tree rpart pruning


【解决方案1】:

一种方法是使用rpart.plotsnip 参数:

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

这会将树放在屏幕上,您可以使用鼠标手动修剪。有关详细信息,请参阅 rpart.plot 包小插图的第 9 章“用鼠标修剪树” http://www.milbo.org/doc/prp.pdf.

【讨论】:

    猜你喜欢
    • 2012-02-09
    • 2014-05-22
    • 2011-04-28
    • 2011-05-02
    • 1970-01-01
    • 2019-05-22
    • 2015-09-22
    • 2021-10-01
    相关资源
    最近更新 更多