r - e1071::svm() 中的总准确度
问题描述
如何在 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
...
解决方案
总准确度是在拟合过程中获得的交叉验证准确度。对于数据的每次拆分,模型都是拟合的,并计算相应验证数据集的准确性。
个体精度可以从
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作为标准)
推荐阅读
- c# - 如何为我的财产创建自定义事件
- asp.net-mvc - 无法弄清楚如何使用下一个和上一个按钮使元素分页
- python-3.x - 如何将两行分钟的时间不同值转换为小时
- c# - 如何确定用户是否不包含角色
- python - Python,无法将变量传递给KafkaConsumer
- angular - 数据绑定在反应形式的 angular2-multiselect 中不起作用
- vue.js - 对 Vue 组件的更改不会触发 Jest 重新运行
- spring-cloud-gateway - spring cloud gateway动态路由,一个路由错了,所有的路由都会错
- grafana - 不要使用 promQL 在 Grafana 中显示来自重新部署的 pod 的数据
- azure-aks - 如何创建 ClusterIP 服务?