【发布时间】:2016-03-26 04:44:12
【问题描述】:
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 对象引用?
非常感谢 手动
【问题讨论】:
-
如果有人决定投反对票,我将不胜感激,这样我就可以改进我的问题,否则毫无意义,谢谢
-
好吧,这不是我的反对意见,但我可以想象有人可能会认为这是要求我们其他人先仔细查看文档,然后(如果没有记录)查看代码,破译它,然后向你解释。这并不是解决代码问题的真正要求,而这是 SO 存在的主要原因。
-
如果您确实阅读了函数
cv.tree的帮助和源代码,您会看到它在数据上调用model.frame,这是一个用于查找用于构建模型的原始数据的函数.请参阅model.frame(tree.carseats)和?model.frame。大概这可以通过解析tree.carseats$call -
我直到现在才阅读源代码 - 但我阅读了帮助和文档......对不起,这个评论在我提交答案后才出现 - 随意发布这个作为答案并接受它
-
没问题 - 保留你的。尽管
eval(tree.carseats$call$data)会这样做,但可能想要删除答案中的几个多余的括号。
标签: r decision-tree cross-validation