割り当てでは、CARTモデルに対してクロスバリデーションを実行するように求められます。私はcvTools
からcvFit
関数を使用しようとしましたが、奇妙なエラーメッセージが表示されました。私が見ているエラーがあるCARTモデルのクロスバリデーション
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))
それはy
がcvFit.default
のために必須であることになります。しかし:
> 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ツリーでクロス検証を行うことができますか? (私は...すっごく怠け者だ)
をあなたは** cvToolsのドキュメントに掘る場合**それが表示されますそれらのツールのほとんどは、離散的ではなく、連続的な応答変数を念頭に置いて構築されていました。あなたはおそらくそれを動作させることができますが、分類エラーを計算するためにあなた自身の関数を 'コスト'に供給しなければならないように見えます。 – joran
@ヨラン:まさに、ありがとう! [私自身の答え](http://stackoverflow.com/a/16724706/946850)を参照してください。 – krlmlr