考虑本文中的示例 http://text-analytics101.rxnlp.com/2014/10/computing-precision-and-recall-for.html 准确率会是 (30 + 60 + 80)/300 吗?什么是加权精度?
如何计算多类分类问题的准确率以及准确率如何等于加权准确率?
机器算法验证
机器学习
准确性
多级
模型评估
精确
2022-03-22 17:01:47
4个回答
对于这个问题,我有一个很好的解决方案和一个完美的可以理解的解决方案,因为我正在从这个问题中寻找相同的解决方案
您可以使用以下方法计算和存储准确性:
(accuracy <- sum(diag(mat)) / sum(mat))
# [1] 0.9333333
每个类的精度(假设预测在行上,真实结果在列上)可以用以下公式计算:
(precision <- diag(mat) / rowSums(mat))
# setosa versicolor virginica
# 1.0000000 0.9090909 0.8750000
如果您想获取特定类的精度,您可以执行以下操作:
(precision.versicolor <- precision["versicolor"])
# versicolor
# 0.9090909
每个类的召回(再次假设预测在行上,真实结果在列上)可以用以下公式计算:
recall <- (diag(mat) / colSums(mat))
# setosa versicolor virginica
# 1.0000000 0.8695652 0.9130435
如果您想召回特定课程,您可以执行以下操作:
(recall.virginica <- recall["virginica"])
# virginica
# 0.9130435
相反,如果您将真实结果作为行,将预测结果作为列,那么您将翻转精度和召回定义。
数据:
(mat = as.matrix(read.table(text=" setosa versicolor virginica
setosa 29 0 0
versicolor 0 20 2
virginica 0 3 21", header=T)))
# setosa versicolor virginica
# setosa 29 0 0
# versicolor 0 20 2
# virginica 0 3 21
准确性适用于整个模型,您的公式是正确的。
一个“A”类的精度与TP_A / (TP_A + FP_A)
上述文章中的一样。现在您可以计算模型的平均精度。有几种平均方法(微观、宏观、加权),这里有很好的解释:
'weighted':计算每个标签的指标,并找到它们的平均值,按支持度加权(每个标签的真实实例数)。这会改变“宏观”以解决标签不平衡问题;(...)
我认为您的困惑来自 3x3 表。但是...该链接有一个关于标签 A 的精度和召回率的示例。准确性非常相似。
A 的准确度 = (30 + 60 + 10 + 20 + 80) / (30 + 20 + 10 + 50 + 60 + 10 + 20 + 20 + 80)
我不知道加权精度是什么。
其它你可能感兴趣的问题