e1071::svm()中的总准确率是如何计算的?这与从混乱表中计算得出的结果不同:
> x <- subset(iris, select = -Species)
> y <- iris$Species
> model <- svm(x, y,cross=10)
> model$tot.accuracy
[1] 96
> caret::confusionMatrix(y,model$fitted)
Confusion Matrix and Statistics
Reference
Prediction setosa versicolor virginica
setosa 50 0 0
versicolor 0 48 2
virginica 0 2 48
Overall Statistics
Accuracy : 0.9733
...发布于 2019-10-16 18:22:30
总精度是在拟合过程中获得的交叉验证精度。对于每个数据拆分,对模型进行拟合,并计算相应验证数据集上的精度。
单个准确度可以通过以下方式获得
cv_accuracies <- model$accuracies
all.equal(mean(cv_accuracies), model$tot.accuracy)
[1] TRUE请注意,由于交叉验证将数据分成10个不同的训练和验证对,其中验证集不在拟合过程中使用,因此与预测整个训练集的最终模型时的精度相比,此精度将不同。
sum(fitted(model) == y)/length(y)
[1] 0.97333333
mean(cv_accuracies)
[1] 96.66667(注1的标准是乘以100 )
https://stackoverflow.com/questions/58410804
复制相似问题