R包"tree":如何控制树的最大深度?
R package "tree": how to control the maximum tree depth?
R包"tree"限制树的最大深度为31。如果函数tree
应用于大数据集,很容易达到这个限制:
> library("tree")
> library("ElemStatLearn")
> data <- list(image=as.matrix(zip.train[,-1]), digit=as.factor(zip.train[,1]))
> t <- tree(digit~image, data, split="gini")
Error in tree(digit ~ image, data, split = "gini") :
maximum depth reached
Calls: source -> withVisible -> eval -> eval -> tree -> .C
有没有办法告诉 tree
在达到最大树深度时停止生长树,而不是因错误而中止?
(换句话说:是否有 rpart.control
的 maxdepth
参数的等价物?)
我同意@jochen 的建议,即rpart
包似乎比tree
包更精致。但是,tree
包似乎在一些小事情上做得更好。
例如,为 tree
对象绘制决策边界比为 rpart
对象绘制决策边界要容易得多(尤其是使用 ggplot
)。
关于 Vincent 的问题,我通过使用 tree.control(min.cut=)
选项来控制 tree
树的深度取得了一些有限的成功,如下面的代码所示。通过更改终端节点中元素的最小数量,您可以对深度进行有限的控制。
library("ElemStatLearn")
library("tree")
data <- list(image=as.matrix(zip.train[,-1]), digit=as.factor(zip.train[,1]))
t <- tree(digit~image, data, split="gini", control=tree.control(1866496, mincut = 1000))
library(maptree)
draw.tree(t)
R包"tree"限制树的最大深度为31。如果函数tree
应用于大数据集,很容易达到这个限制:
> library("tree")
> library("ElemStatLearn")
> data <- list(image=as.matrix(zip.train[,-1]), digit=as.factor(zip.train[,1]))
> t <- tree(digit~image, data, split="gini")
Error in tree(digit ~ image, data, split = "gini") :
maximum depth reached
Calls: source -> withVisible -> eval -> eval -> tree -> .C
有没有办法告诉 tree
在达到最大树深度时停止生长树,而不是因错误而中止?
(换句话说:是否有 rpart.control
的 maxdepth
参数的等价物?)
我同意@jochen 的建议,即rpart
包似乎比tree
包更精致。但是,tree
包似乎在一些小事情上做得更好。
例如,为 tree
对象绘制决策边界比为 rpart
对象绘制决策边界要容易得多(尤其是使用 ggplot
)。
关于 Vincent 的问题,我通过使用 tree.control(min.cut=)
选项来控制 tree
树的深度取得了一些有限的成功,如下面的代码所示。通过更改终端节点中元素的最小数量,您可以对深度进行有限的控制。
library("ElemStatLearn")
library("tree")
data <- list(image=as.matrix(zip.train[,-1]), digit=as.factor(zip.train[,1]))
t <- tree(digit~image, data, split="gini", control=tree.control(1866496, mincut = 1000))
library(maptree)
draw.tree(t)