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对象引用的训练集?
非常感谢 马努
答案 0 :(得分:1)
已按照42的建议查看代码,并找到了对model.frame()的调用,其中"返回一个data.frame,其中包含使用公式所需的变量和任何.... arguments& #34 ;.此方法的树实现(忽略检查等执行以下操作:
eval(tree.carseats$call$data)
基本上提取带有数据集名称的符号(在本例中为Carseats),然后对其进行评估。
道歉,如果这对其他人来说是显而易见的。
马努