我将数据框划分为两个subsets
,trainSet
和testSet
。然后我在树库中使用tree命令:
tree1<-tree(y~., data=trainSet)
然后假设我想使用testSet修剪树1:
tree2<-prune.tree(tree1, newdata=testSet,best=7)
但是,我注意到tree2的计算基于原始trainSet
,而不是新数据集(testSet
)。
我不知道如何让prune.tree命令处理新数据集以选择最佳树。
答案 0 :(得分:0)
使用model.frame
,这应该可行
tree2<-prune.tree(tree1, newdata=model.frame(testSet),best=7)
但我认为最好使用cv.tree
来对您的训练数据进行交叉验证,并在其上调用prune.tree
。
cv.tree(tree1, , prune.tree)
这里有一个例子,起诉来自MASS包的 fgl 数据。
data(fgl, package="MASS")
fgl.tr <- tree(type ~ ., fgl)
prune.tree(fgl.tr,newdata=model.frame(fgl[1:200,]))