cv.tree函数从哪里获取数据以执行交叉验证?

时间:2015-12-19 16:56:43

标签: r decision-tree cross-validation

ISLR第8章中的实验包含以下练习来交叉验证分类树:

library(tree) 
library(ISLR) 
attach(Carseats)
set.seed(2)
train=sample(1:nrow(Carseats), 200)
Carseats.test=Carseats [-train ,]
High.test=High[-train]
tree.carseats=tree(High∼.-Sales,Carseats,subset=train)
cv.carseats =cv.tree(tree.carseats ,FUN=prune.misclass)

现在,我的问题是:cv.tree函数如何在不将数据集作为参数传入的情况下执行交叉验证,或者是cv.tree对象引用的训练集?

非常感谢 马努

1 个答案:

答案 0 :(得分:1)

已按照42的建议查看代码,并找到了对model.frame()的调用,其中"返回一个data.frame,其中包含使用公式所需的变量和任何.... arguments& #34 ;.此方法的树实现(忽略检查等执行以下操作:

eval(tree.carseats$call$data)

基本上提取带有数据集名称的符号(在本例中为Carseats),然后对其进行评估。

道歉,如果这对其他人来说是显而易见的。

马努