【问题标题】:Total accuracy in e1071::svm()e1071::svm() 中的总准确度
【发布时间】:2020-02-13 02:05:08
【问题描述】:

如何在 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          
  ...

【问题讨论】:

    标签: r svm


    【解决方案1】:

    总准确度是在拟合过程中获得的交叉验证准确度。对于数据的每次拆分,模型都是拟合的,并计算相应验证数据集的准确性。

    个体精度可以从

    得到
    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为标准)

    【讨论】:

    • 如果不考虑预测元素,就没有办法完成实际预测吗?我的意思是,获取除一个以外的所有元素并预测那个,对每个元素重复。
    • 我不完全确定你的意思?在交叉验证的每个步骤中,实现不返回模型拟合,而只返回最终模型。
    • 我的意思是相当于z
    猜你喜欢
    • 2017-11-30
    • 2011-11-15
    • 2012-06-16
    • 2014-08-05
    • 2014-08-01
    • 2019-01-21
    • 1970-01-01
    • 2012-04-13
    • 2021-09-28
    相关资源
    最近更新 更多