cv.tree函数 - 没有错误消息 - 没有计算停止

时间:2016-05-17 09:28:12

标签: r

我想使用包树中的函数cv.tree。出于锻炼目的,我使用文件' iris'来自R数据。

当使用cv.tree时,计算永远不会结束,也不会收到错误消息,我必须使用停止按钮。我的代码出了什么问题? 我的核心代码如下:

> library(party)
> data(iris)
> sample <-  sample(2, size=nrow(iris), replace=TRUE, prob=c(.7,.3))
> sampling <- cbind(iris,sample)
> traindata <- sampling[sample==1,]
> library(Formula)
> formula <- Species ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width 
> treemodel = ctree(formula,data=traindata)
> library(tree)
> class(treemodel) <- "tree"
> crossvalidation <- cv.tree(object=treemodel, rand=runif(nrow(traindata)), FUN=prune.tree, K=10)

我还使用了其他K值和FUN = prune.misclass。 谢谢你的帮助。 Ciau Uwe

1 个答案:

答案 0 :(得分:0)

你有两个问题。

treemodel对象不属于“树”类。 您已分配“树”类的事实并未解决此问题。

比较您的树和cv.tree中示例中的树。

data(cpus, package="MASS")
cpus.ltr <- tree(log10(perf) ~ syct + mmin + mmax + cach
 + chmin + chmax, data=cpus)
cpus.ltr

# compare to your tree
treemodel

它们是非常不同的对象。 你必须找到一种从“BinaryTree”转换为“tree”的方法。

其次,rand参数应采用整数向量。 runif(nrow(traindata))给出0到1之间的数字,即不是整数。 但是,如果错误指定,cv.tree似乎默默地忽略了这个参数。