In einer Zuweisung werden wir aufgefordert, eine Kreuzvalidierung für ein CART-Modell durchzuführen. Ich habe versucht, die cvFit
Funktion von cvTools
zu verwenden, aber eine merkwürdige Fehlermeldung erhalten. Hier ist ein minimales Beispiel:Kreuzvalidierung eines CART-Modells
library(rpart)
library(cvTools)
data(iris)
cvFit(rpart(formula=Species~., data=iris))
Der Fehler ich sehe ist:
Error in nobs(y) : argument "y" is missing, with no default
Und die 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))
Es sieht aus, dass y
für cvFit.default
obligatorisch ist. Aber:
> 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
Was mache ich falsch? Welches Paket würde mir erlauben, eine Kreuzvalidierung mit einem CART-Baum durchzuführen, ohne es selbst programmieren zu müssen? (Ich bin sooo faul ...)
Wenn Sie in der Dokumentation ** cvTools graben ** es erscheint Die meisten dieser Tools wurden mit kontinuierlichen Antwortvariablen erstellt und nicht diskret. Sie könnten es wahrscheinlich zum Funktionieren bringen, aber es sieht so aus, als müssten Sie Ihre eigene Funktion für die Berechnung des Klassifikationsfehlers bereitstellen. – joran
@joran: Genau - danke! Siehe [meine eigene Antwort] (http://stackoverflow.com/a/16724706/946850). – krlmlr