また、10 倍の交差検証を実行しようとしています。この関数はパラメーターの最適化には使用されますが、モデルのトレーニングとテストには使用されないため、tune を使用することは正しい方法ではないと思います。
Leave-One-Out クロス検証を実行する次のコードがあります。データセットが、データが格納された data.frame であるとします。各 LOO ステップで、観察された対予測されたマトリックスが追加され、最終的に結果にグローバルな観察された対予測されたマトリックスが含まれるようになります。
#LOOValidation
for (i in 1:length(dataset)){
fit = svm(classes ~ ., data=dataset[-i,], type='C-classification', kernel='linear')
pred = predict(fit, dataset[i,])
result <- result + table(true=dataset[i,]$classes, pred=pred);
}
classAgreement(result)
したがって、10 倍のクロス検証を実行するには、データセットを手動で分割し、フォールドを使用してモデルをトレーニングおよびテストする必要があると思います。
for (i in 1:10)
train <- getFoldTrainSet(dataset, i)
test <- getFoldTestSet(dataset,i)
fit = svm(classes ~ ., train, type='C-classification', kernel='linear')
pred = predict(fit, test)
results <- c(results,table(true=test$classes, pred=pred));
}
# compute mean accuracies and kappas ussing results, which store the result of each fold
これがお役に立てば幸いです。