cv.tree 函数从哪里获取数据来执行交叉验证?
Where does the cv.tree function get the data to perform cross validation from?
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对象引用的训练集?
非常感谢
马努
按照 42 的建议查看了代码,发现了对 model.frame() 的调用,"returns a data.frame with the variables needed to use formula and any .... arguments"。此方法的树实现(忽略检查等)执行以下操作:
eval(tree.carseats$call$data)
基本上提取具有数据集名称的符号(在本例中为 Carseats),然后对其进行计算。
如果这对其他人来说是显而易见的事情,我们深表歉意。
马努
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对象引用的训练集?
非常感谢 马努
按照 42 的建议查看了代码,发现了对 model.frame() 的调用,"returns a data.frame with the variables needed to use formula and any .... arguments"。此方法的树实现(忽略检查等)执行以下操作:
eval(tree.carseats$call$data)
基本上提取具有数据集名称的符号(在本例中为 Carseats),然后对其进行计算。
如果这对其他人来说是显而易见的事情,我们深表歉意。
马努