【问题标题】:cv.tree function - no error message - no calculation stopcv.tree 函数 - 没有错误信息 - 没有计算停止
【发布时间】:2016-09-13 07:45:15
【问题描述】:

我想使用包树中的函数 cv.tree。出于练习目的,我使用 R 数据中的文件“iris”。

使用 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。 谢谢你的帮助。乔乌韦

【问题讨论】:

  • cv.tree 函数以“K=10)”结尾

标签: r


【解决方案1】:

你有两个问题。

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 如果指定错误,似乎会默默地忽略此参数。

【讨论】:

  • 你的回答让我更了解这个错误。
  • 当我使用树函数时,问题没有出现。但是我想使用派对包中的 ctree 功能。
  • 有没有办法产生类“树”的 ctree 函数输出?
  • 恐怕找不到。而且我看不到手动将一个转换为另一个的简单方法。对不起。
  • 好的,我想我找到了答案,即派对包中的 ctree 功能不需要修剪,非常感谢您的帮助,给了我正确的方向
猜你喜欢
  • 1970-01-01
  • 2020-05-07
  • 2013-06-09
  • 1970-01-01
  • 2013-07-25
  • 2017-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多