在一个任务中,我们需要对CART模型进行交叉验证。我尝试使用来自cvTools
的cvFit
函数,但得到了一个奇怪的错误信息。下面是一个最简示例:
library(rpart)
library(cvTools)
data(iris)
cvFit(rpart(formula=Species~., data=iris))
我看到的错误是:
Error in nobs(y) : argument "y" is missing, with no default
接下来是 traceback()
:
5: nobs(y)
4: cvFit.call(call, data = data, x = x, y = y, cost = cost, K = K,
R = R, foldType = foldType, folds = folds, names = names,
predictArgs = predictArgs, costArgs = costArgs, envir = envir,
seed = seed)
3: cvFit(call, data = data, x = x, y = y, cost = cost, K = K, R = R,
foldType = foldType, folds = folds, names = names, predictArgs = predictArgs,
costArgs = costArgs, envir = envir, seed = seed)
2: cvFit.default(rpart(formula = Species ~ ., data = iris))
1: cvFit(rpart(formula = Species ~ ., data = iris))
看起来cvFit.default
需要强制使用y
。但是:
> cvFit(rpart(formula=Species~., data=iris), y=iris$Species)
Error in cvFit.call(call, data = data, x = x, y = y, cost = cost, K = K, :
'x' must have 0 observations
我做错了什么?哪个软件包可以让我使用CART树进行交叉验证,而无需自己编写代码呢?(我真的很懒...)
cost
以计算分类误差。 - joran